为了账号安全,请及时绑定邮箱和手机立即绑定

Perl的后台、系统和EXEC之间有什么区别?

Perl的后台、系统和EXEC之间有什么区别?

Perl的后台、系统和EXEC之间有什么区别?有人能帮帮我吗?在Perl中,在以下方面有什么区别:exec "command";和system("command");和print `command`;还有其他方法来运行shell命令吗?
查看完整描述

3 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

让我先引用这些手册:

perldoc exec():

exec函数执行系统命令和永不复返-使用系统而不是主管如果你想要它回来

Perldoc系统():

做与执行列表完全相同的事情,除了叉子做好了首先,父进程等待子进程完成。

与.形成对比主管系统,Backticks给出的不是返回值,而是收集的STDOUT。

perldoc‘String’:

一个字符串,它(可能)被内插,然后作为一个系统命令执行。/bin/sh或者它的等价物。shell通配符、管道和重定向将得到尊重。收藏返回命令的标准输出。标准错误不受影响。


替代品:

在更复杂的场景中,您需要获取STDOUT、STDERR或返回代码,您可以使用众所周知的标准模块,如IPC:Open2IPC:Open3.

例子:

use IPC::Open2;my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'some', 'cmd', 'and', 'args');waitpid( $pid, 0 );my $child_exit_status = $? >> 8;

最后,IPC:Run也值得一看…


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 608 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信