所以我有一个递归函数,它将创建多个进程并从父进程写入一个整数到子进程。
当数字小到数百/数千时,一切都很有效。
但是当数字很大时,代码将永远停留在write
语句之前。我已经包含了对语句的错误检查,但没有打印出错误。
有谁知道可能的原因是什么?
答案 0 :(得分:0)
当write(2)到pipe(7)时,如果管道另一端的进程没有从中读取(并且管道已满),则可以阻止写入。
您可以在poll(2)中使用event loop之类的多路复用系统调用。另请参阅this answer。
但是你应该避免创建超过几十个同时进行的子进程。另请参阅setrlimit(2) RLIMIT_NPROC
(以及bash ulimit
内置版)。