我想child.pl
在另一个 perl 程序中调用一个 perl 程序parent.pl
,并希望从 to 传递数据child.pl
并parent.pl
打印这些数据parent.pl
。 system("perl child.pl")
可能不起作用,因为 parent.pl 在child.pl
完成之前不会做任何事情。我阅读了 perlipc 的在线文档,它似乎pipe()
并且fork()
可以满足我的一些需求,但是我没有找到一种方法将数据从子进程传递到父进程之后exec
。这是代码parent.pl
:
#!/usr/bin/perl -w
pipe(FROM_CHILD, TO_PARENT);
$pid = fork();
if ($pid == 0) {
# We're in the child process.
close(FROM_CHILD);
# Send data to parent.
print TO_PARENT "Hello, parent\n"; # I can pass data to parent before exec
exec("perl child.pl"); # But how what should I do after exec, in child.pl?
exit(0); # Terminate child.
}
elsif (undef $pid) {
print "Not defined: means an error.";
}
else {
# Parent process.
close(TO_PARENT);
$data = <FROM_CHILD>;
print "From child: $data\n";
$id = wait();
print "Child $id is dead.\n";