gpt4 book ai didi

C IPC等待 child

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

所以我有一个创建子进程并执行命令(例如,ls)的程序。然后, parent 将使用管道发送给 child 并从 child 那里获取。当我自己从命令行输入命令时,这很好用。

但是,当输入来自文件时,似乎 child 没有足够的时间运行,从管道读取时我得到 NULL - 即使会有信息来自它。

除了使用 sleep() 之外,有没有更好的方法来确保 child 在尝试读取之前已经跑完了?

非常感谢!

最佳答案

如果您没有将您的管道文件描述符设置为非阻塞的,那么应该没有问题。管道上的任何读取都将阻塞,直到子进程产生输出;如果您需要响应多个文件描述符(例如,来自用户的标准输入和来自子进程的管道),请使用 select()poll() .

我假设它是返回 NULL 的 fgets()。这表示文件结束(意味着子进程已关闭其管道末端)或错误。您可以使用 feof()ferror() 检查其中哪些是正确的。在错误情况下使用 perror() 来查看实际错误是什么。

关于C IPC等待 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2741322/

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