首先,为什么main
循环仅在发送数据时调用getfifo
?进入while (true)
,我本以为它会继续循环。
其次,在发送数据时,首先点击的是read(c2s, &buf, MAX_BUF)
,然后是主loop->getfifo()
,然后是fifo func。这似乎不合时宜。有人可以解释一下吗?
最后,这是布局代码的正确方法吗?我将有一个主要的连续循环,它将在完成时运行许多不同的部分,但是顺序一切似乎运行使我觉得我做错了。
int main(int argc, char *argv[])
{
if (stat(myfifo, &st) != 0)
mkfifo(myfifo, 0666);
while (true)
getfifo();
unlink(myfifo);
}
void getfifo()
{
char buf[MAX_BUF] = "";
/* open the FIFO (named pipe) */
int c2s = open(myfifo, O_RDONLY);
// if there is data on the pipe we read it in buf
if (read(c2s, &buf, MAX_BUF) > 0) {
printf("FIFO Received: %s\n", buf);
// do something with the received data
// TODO: parse it and send it over to slaves
}
sleep(1);
close(c2s);
}
对不起,如果这是基本的,这是我十多年来的第一个C ++程序,想要真正理解我在做什么,而不仅仅是让它工作。