是否有像“system”这样的 Perl 函数?不等待返回值?
可能的重复:
如何在后台运行 Perl 系统命令?< /a>
我有一个简单的 Perl 程序,它根据 if 语句的结果触发另一个进程。但是,在触发的过程完成之前,我无法继续发送命令。我认为这是因为“系统”函数在继续之前等待进程的返回值。
while (bla bla bla) {
if (command is bla) {
system("osascript 'something.app'");
} else {
print $client "invalid command\r\n";
}
} continue {
…etc
简而言之,我的脚本在收到来自 some.app 的返回信息之前不会继续。有办法解决这个问题吗?
Possible Duplicate:
How can I run Perl system commands in the background?
I have a simple Perl program that triggers another process, dependent on the outcome of an if statement. However, I cannot continue sending commands until the triggered process is complete. I presume this is because the 'system' function waits for a return value of the process before continuing.
while (bla bla bla) {
if (command is bla) {
system("osascript 'something.app'");
} else {
print $client "invalid command\r\n";
}
} continue {
…etc
In short, my script won't continue until it hears something back from something.app. Any way round this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
exec
位于fork
将在不阻塞执行的情况下工作:An
exec
within afork
will work without blocking execution:“amp it off
在 Unix/Linux 上,您可以添加“&”来 ”告诉 shell 在后台运行该进程。我不记得“孙子”进程是否被重新设置父进程,因此您可能需要一个 SIGCHLD 处理程序来在子进程退出时获取它们。
我认为有一种方法可以在 Windows 上做同样的事情,但我现在不记得了。也许“开始/b”。
http://perldoc.perl.org/functions/system.html
http://perldoc.perl.org/perlipc.html#Signals
On Unix/Linux you can 'amp it off'
Adding the '&' tells the shell to run the process in the background. I don't remember if the "grandchild" process gets re-parented or not, so you may need a SIGCHLD handler to reap the child processes when they exit.
I think there's a way to do the same thing on windows, but I can't remember it at the moment. Maybe "start /b ".
http://perldoc.perl.org/functions/system.html
http://perldoc.perl.org/perlipc.html#Signals