Tag: io

select()没有响应写入/ dev / input / mice

我正在编写一个程序,通过键盘和鼠标设备文件上的select()进行监视。 它等待这些文件上的任何写操作(这应该在键击或鼠标移动时发生),并且只要有写操作,就会执行一些作业。 但它不起作用。 我的代码如下。 #include #include #include #include #include #include #include #include #include void main() { int mouse_fd,kbd_fd,fd_max; struct input_event ev; fd_set rfs,wfs; if((mouse_fd=open(“/dev/input/event3”,O_WRONLY))==-1) { printf(“opening mouse device file has failed \n”); } else { printf(“opening mouse device file has been successfull \n”); } if((kbd_fd=open(“/dev/input/event2”,O_WRONLY))==-1) { printf(“opening keyboard device file has failed \n”); } else […]

fwrite是否在内部调用任何锁?

在solaris中,当我将dbx连接到其中一个正在运行的堆栈时,我发现调用fwrite导致__lll_lock_wait()? 在什么情况下会发生这种情况? fwrite内部是否尝试获取锁定?

在C / C ++中编写非打印字符的行为是什么?

如果字符是通过printf / fprintf编写的,那么编写非打印字符的行为是未定义的还是实现定义的? 我很困惑,因为C标准N1570 / 5.2.2中的单词仅涉及打印字符和字母转义序列的显示语义。 另外,如果字符是通过std::ostream (仅限C ++)编写的,该怎么办?

使用fgets和strtok从文件中读取和解析行

我在使用相当基本的代码时遇到了麻烦。 我需要从下面显示的文件中读取每一行,用strtok将它分成3部分,并将每个部分存储到一个数组中。 “目标”和“助手”的数组工作正常,但由于某种原因,整个名称数组都填充了从文件中读取的姓氏。 输入文件: Redden 2 0 Berglund 5 2 Jackman 2 0 Stewart 4 0 Oshie 3 5 McDonald 2 4 Pietrangelo 2 7 Perron 2 6 Tarasenko 5 5 相关代码: int main(int argc, char* argv){ FILE* inFile = fopen(argv[1],”r”); char ** nameArray; int * goalArray; int * assistArray; int size = countLinesInFile(inFile); allocateMemory(&goalArray, […]

如何fread()结构?

struct book { unsigned short size_of_content; unsigned short price; unsigned char *content; }; 假设我有包含多book的文件,每个book都有不同的size_of_content , price和content 。 我如何一次阅读一book并确定它是哪本书(例如检查价格)? size_t nread2; struct book *buff = malloc(sizeof(struct book)); while( (nread2 = fread(buff, sizeof(struct book), 1, infp)) > 0 ) { printf(“read a struct once \n”); } 这就是我到目前为止所拥有的。 每当我读取结构时,我都会尝试打印。 但是,当我尝试使用5个结构的输入文件时,它将打印15次… 谢谢。

C获取所有打开的文件描述符

我想在我的C程序中实现行为,这样如果发生SIGINT,我会关闭所有打开的文件描述符。 有一个简单的方法来获取它们的列表?

使用%* c清除scanf缓冲区的危险

在scanf()中使用%* c来清除缓冲区是否有任何危险。 例如: char c; for (int i = 0; i < 5; i++) { scanf("%c%*c", &c); } 要么 char* str; char c; int i; scanf(“%s”, str); scanf(“%d%*c”, &i); scanf(“%c%*c”, &c); 是否应该关注缓冲区溢出或其他安全问题? 似乎没有关于在scanf中使用星号的正式文档用于C( 编辑这不是真的),所以我很难找到输入的额外字符究竟发生了什么。 有没有更好的方法清除C中的scanf缓冲区?

在C中将文本前置到文件中

我想使用C向文件(或文件组)添加标准头文件。这些文件可能非常大,因此将它们加载到内存中或将它们复制到临时文件中是个坏主意(我认为)。 有没有办法简单地将标题直接添加到每个文件? 标题本身非常小,不超过1 KB

如何用C编写数组到文件

我有一个二维矩阵: char clientdata[12][128]; 将内容写入文件的最佳方法是什么? 我需要不断更新此文本文件,以便在每次写入时清除文件中的先前数据。

C fgets与fgetc的阅读线

我需要读取一行文本(以换行符结尾)而不对长度做出假设。 所以我现在面对各种可能性: 使用fgets并每次检查最后一个字符是否为换行符并连续追加到缓冲区 使用fgetc读取每个字符,偶尔重新分配缓冲区 Intuition告诉我fgetc变体可能会变慢,但是再一次我没有看到fgets如何在不检查每个角色的情况下做到这一点(我的直觉并不总是那么好)。 线条非常大,因此性能很重要。 我想知道每种方法的优缺点。 先感谢您。