gpt4 book ai didi

C:处理多个管道时 write() 的行为很奇怪

转载 作者:行者123 更新时间:2023-11-30 17:37:41 25 4
gpt4 key购买 nike

所以我有一个递归函数,它将创建多个进程并将一个整数从父进程写入子进程。

当数字很小(例如数百/数千)时,一切都很好。

但是当数字很大时,代码总是会卡在write语句之前。我已经对语句进行了错误检查,但没有打印错误。

有谁知道这可能是什么原因吗?

最佳答案

当你 write(2)pipe(7)如果管道另一端的进程没有从中读取数据(并且管道已满),则写入可能会被阻止。

您可以使用多路复用系统调用,例如 poll(2)在你的event loop 。另请参阅this answer .

但是您应该避免创建超过几十个同时的子进程。另请参阅setrlimit(2)使用 RLIMIT_NPROC (以及内置的 bash ulimit)。

另请阅读Advanced Linux Programming .

关于C:处理多个管道时 write() 的行为很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22321371/

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