【发布时间】:2014-04-10 21:36:50
【问题描述】:
我发现了一些代码,Perl 中的两个进程可以通过管道进行通信。示例:
if ($pid = fork) {
close $reader;
print $writer "Parent Pid $$ is sending this\n";
close $writer;
waitpid($pid,0);
}
else {
close $writer;
chomp($line = <$reader>);
print "Child Pid $$ just read this: `$line'\n";
close $reader;
exit;
}
现在我有以下问题:
- 是否可以让阅读器从管道中读取,然后阻塞,直到新数据从管道中传出,就像循环一样?
- 如果是,当父进程没有数据要发送时,杀死子进程的方法是什么?
- 每个程序有多少打开的读/写管道有限制吗?例如。如果我分叉 10 个进程并有 20 个管道(10 个读/10 个写),这是一个坏主意吗?
如果问题太基本,我很抱歉,但我的经验是使用另一种语言的线程。
【问题讨论】:
标签: linux perl multiprocessing fork pipe