有人可以帮帮我吗?在Perl中,两者之间有什么区别?
exec "command";
和
system("command");
和
print `command`;
还有其他方法可以运行shell命令吗?
最佳答案
执行
执行命令,永不返回。
就像函数中的return
语句一样。
如果找不到该命令,exec
返回false。
它永远不会返回true,因为如果找到该命令,它将根本不会返回。
返回STDOUT
,STDERR
或命令的退出状态也没有意义。
您可以在 perlfunc
中找到有关它的文档,
因为它是一个功能。
系统
执行命令,命令完成后继续执行Perl脚本。
返回值是命令的退出状态。
您可以在 perlfunc
中找到有关它的文档。
反引号
像system
执行命令,命令完成后继续执行perl脚本。
与 system
相反,返回值是命令的STDOUT
。
qx//
等同于反引号。
您可以在 perlop
中找到有关它的文档,因为与system
和exec
不同,它是运算符。
其他方式
上面缺少的是一种异步执行命令的方法。
这意味着您的perl脚本和命令将同时运行。
这可以通过 open
完成。
它允许您读取STDOUT
/ STDERR
并写入命令的STDIN
。
但是,它取决于平台。
还有几个模块可以简化此任务。
有IPC::Open2
和IPC::Open3
和IPC::Run
,以及Win32::Process::Create
(如果您在Windows上)。
关于perl - Perl的反引号,系统和exec有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/799968/