我是 Unix 编程的绝对初学者,我必须制作一个从标准输入读取一些命令的程序,然后是另一个执行这些命令的程序。我必须使用 fifo 来建立这两个程序之间的通信。我的问题是:我怎样才能从那些行没有固定大小的fifo逐行(一个命令)读取?我正在考虑用信号实现一种同步,但是我相信有更好的方法。
如果这是一个平庸的问题,我很抱歉,但我是一个完美的新手。
哦,对不起,如果我的英语不好。
我假设你正在阅读read()
?只需使用fgets()
并让 stdlib 处理缓冲。如果您使用open()
而不是fopen()
先获取您的 FILE 结构fdopen()
。就像是:
FILE * pFile;
char mystring [100];
pFile = fopen("myfifo" , "r");
if (pFile == NULL)
{ perror ("Error opening fifo");
exit(1);
}
while (fgets(mystring, 100, pFile) != NULL)
puts(mystring);
fclose (pFile);