gpt4 book ai didi

c - 等待来自文件描述符的输入

转载 作者:太空宇宙 更新时间:2023-11-04 01:40:44 24 4
gpt4 key购买 nike

我正在重定向子进程中 stdin 和 stdout 的文件描述符,如下所示。现在我希望子进程等到数据在输入描述符处可用。目前,如果数据在输入描述符中不可用,那么子进程会采用一些随机值(我猜是 EOF )并终止。

fd0=open("in1.dat", O_RDWR|O_CREAT);
fd1=open("out1.dat", O_RDWR|O_CREAT);
if(pid==0)
{
dup2(fd0, 0); // redirect input to the file
dup2(fd1, 1); // redirect output to the file
execlp("./flip","flip","new","4",NULL);
}

最佳答案

从文件描述符读取将阻塞直到数据可用(除非您安排读取是非阻塞的)。在您的情况下,如果文件为空,那么读取确实会返回 0 以指示文件结束并且不会向缓冲区写入任何内容(因此您看到的随机值是您调用读取之前的任何值)。如果您希望将输入文件视为管道(例如,您希望 child 等待直到其他人将数据写入文件),那么您希望将输入文件设为 fifo 而不是常规文件。 (例如,使用 mknod 而不是打开。)

关于c - 等待来自文件描述符的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5940632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com