【Linux】Perl调用外部命令(其他脚本、系统命令)的方法和区别
1.command
使用反引号调用外部命令能够捕获其标准输出,并按行返回且每行结束处附带一个回车。反引号中的变量在编译时会被内插为其值。
2.管道
open LIST "ls -l|";
open MORE "|more";
@list=<LIST>;
print MORE @list;
close(LIST);
close(MORE);
使用带管道的文件句柄来执行外部命令,使用方式与读写文件类似。可以从外部命令的输出读取数据,也可以将数据输出到外部命令作为输入。
3.system
system("command");
使用该命令将开启一个子进程执行引号中的命令,父进程将等待子进程结束并继续执行下面的代码。
system ("mkdir outdir ") unless (-d outdir);
system会返回执行后的状态,即,如果正确执行完毕,返回0;没有执行返回非0
4.exec(“command”)
效果同system命令类似,区别是不会开启子进程,而是取代父进程,因此执行完引号中的命令后进程即结束。一般和fork配合使用。而对于exec这个函数来说,如果执行了exec则结束后续所有进程,包括他自己的返回值<=>没有返回值;exec在系统没有你要执行的命令的情况下,不会返回false值,只是报错!!!和返回数值0 !!!