通过fifo逐行阅读

时间:2012-07-14 21:37:10

标签: c linux unix

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

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

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

1 个答案:

答案 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);