【发布时间】:2013-02-28 23:10:29
【问题描述】:
我想在另一个perl程序parent.pl中调用一个perl程序child.pl,并希望将数据从child.pl传递到parent.pl并通过parent.pl打印这些数据。 system("perl child.pl") 可能不起作用,因为在 child.pl 完成之前, parent.pl 不会做任何事情。我读了the online doc of 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";
【问题讨论】: