perl如果用system的话有以下几个问题:无法知道子进程pid;另外,system是阻塞调用,父进程只能等待子进程执行完毕才能继续做其他的工作。
下面是一个fork+exec函数组合代替system函数的例子
#!/usr/bin/perl
@namingservice=("orbd", "-ORBInitialPort","3001","-ORBInitialHost","localhost");
my $pid;
if($pid=fork())
{
open MDOUT "ele.mdout";
while <MDOUT>
{
if $_ =~ /^356/
{
kill $pid;
}
}
}
else
{
#这是子进程执行的代码
exec(@namingservice);
exit(0);
}