我是Unix编程的绝对初学者,我要制作一个程序,从标准输入读取一些命令,然后执行那些命令的另一个程序。我要使用fifo来建立这两个程序之间的通信。 我的问题是:如何从fifo中逐行读取(一个命令)这些行没有固定大小?我想用信号实现一种同步,但我确信有更好的方法。
我很抱歉,如果这是一个平庸的问题,但我是这个东西的完美新手。
哦,对不起,如果我的英语不好。
答案 0 :(得分:3)
我假设您正在阅读read()
?只需使用fgets()
并让stdlib处理缓冲。如果您使用open()
而不是fopen()
,请先使用fdopen()
获取您的FILE结构。类似的东西:
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);