在perl中启动子进程执行外部程序有多种方式,主要有exec
system
qx//
,qx//
也就是通常说的反引号``
。这几种方式有或多或少的区别。
本文想从是否返回进程 返回值是什么 什么时候返回 是否使用shell几个方面对这三个命令加以解析说明。
exec
## 语法
exec PATHNAME LIST
exec LIST
exec函数会终止当前进程,并执行一个外部命令,而且不会返回进程。
exec不会创建子进程,而是直接使用Perl的进程去执行exec任务。通常是使用Perl为一个程序设置运行环境,然后用exec去运行。
只有当命令不存在,并且是直接执行命令而不是通过系统Shell执行,exec才会失败并返回false。命令出错不会返回。
exec函数执行时会出现三种情况
exec的参数不同时,exec执行的实际执行过程不一样。
使用系统shell执行
当exec只有一个标量参数,会检查这个参数是否有shell元字符。如果找到shell元字符(见文章末尾),整个标量会传到系统标准命令解释权去执行。如果没有shell元字符,参数被分解为单词,并直接执