3

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

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

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

4

1 回答 1

3

我假设你正在阅读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);
于 2012-07-14T23:19:19.713 回答