通过fifo逐行阅读

我是一个绝对的Unix编程初学者,我必须编写一个程序,从标准input读取一些命令,然后执行这些命令的另一个程序。 我必须使用fifo来build立这两个程序之间的通信。 我的问题是:如何从一个FIFO中逐行(一个命令)读取那些行没有固定大小的行? 我想用信号实现一种同步,但我相信有更好的方法。

我很抱歉,如果这是一个平庸的问题,但我是一个完美的新手这个东西。

如果我的英语不好,对不起。

我假设你正在阅读与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);