Perl调用外部命令的方式和区别
来源:互联网 发布:2017网络语言 编辑:程序博客网 时间:2024/05/18 01:29
1. system("command");
使用该命令将开启一个子进程执行引号中的命令,父进程将等待子进程结束并继续执行下面的代码。
2. exec("command");
效果同system命令类似,区别是不会开启子进程,而是取代父进程,因此执行完引号中的命令后进程即结束。一般和fork配合使用。
3. `command`;
使用反引号调用外部命令能够捕获其标准输出,并按行返回且每行结束处附带一个回车。反引号中的变量在编译时会被内插为其值。
4. open LIST "ls -l|";
open MORE "|more";
@list=<LIST>;
print MORE @list;
close(LIST);
close(MORE);
使用带管道的文件句柄来执行外部命令,使用方式与读写文件类似。可以从外部命令的输出读取数据,也可以将数据输出到外部命令作为输入。
5. defined(my $pid=fork) or die "Can not fork: $!\n";
unless ($pid) {
exec ("date");
}
waitpid ($pid,0);
使用fork将会开启子进程与父进程同时执行之后的代码,其中父进程中fork会返回一个非零的数,而子进程中将返回零。上面的代码完成和system("date")相同的功能。比起system单纯地调用外部命令,fork可以完成更加复杂的进程操作。
在Perl中用system、exec、readpipe函数来执行系统命令
转自:http://cn.waterlin.org/
在Perl中,可以用system、exec、readpipe这三个命令来调用其他脚本、系统命令等。这三个命令的主要区别就是返回值。
1) 对于system这个函数来说,它会返回执行后的状态,比如说
@args = (“command”, “arg1″, “arg2″);
system(@args) == 0
or die “system @args failed: $?”
当然,你也可以用类似于下面的语句来检查出错的原因:
if ($? == -1) {
print “failed to execute: $!\n”;
}
elsif ($? & 127) {
printf “child died with signal %d, %s coredump\n”,
($? & 127), ($? & 128) ? ‘with’ : ‘without’;
}
else {
printf “child exited with value %d\n”, $? >> 8;
}
2) 而对于exec这个函数来说,仅仅是执行一个系统的命令,一般情况下并没有返回值。exec只有在系统没有你要执行的命令的情况下,才会返回false值。
exec (‘foo’) or print STDERR “couldn’t exec foo: $!”;
{ exec (‘foo’) }; print STDERR “couldn’t exec foo: $!”;
3) 当我们需要保存系统命令运行的结果,以便分析并作进一步的处理时,就要用到readpipe这个函数了。例如:
@result = readpipe( “ls -l /tmp” );
print “@result”;
会产生如下的结果:
drwxr-xr-x 2 root root 4096 Mar 19 11:55 testdir
当然,你也可以把生成的结果放到一个文件里,以便写工作日志呀、发布报告呀。
$inject_command = “./ConfigChecker.bat F:/nic/3502/ARRAY-4AD2E0573/etc “.$device_name;
chdir “F:/TestTools/bin/”;
@temp_result = readpipe($inject_command);
open(result_file,”>result.txt”);
print result_file @temp_result;
close(result_file);
这样,你就把系统运行的结果扔到了系统命令所在目录下的result.txt文件里了。
完!
- Perl调用外部命令的方式和区别
- Perl调用外部命令的方式和区别
- Perl调用外部命令的方式和区别
- Perl调用外部命令的方式和区别
- python调用cmd命令的几种方式和区别
- perl调用外部命令或者脚本,如何取得外部命令或者脚本的返回值(退出值)
- php调用外部命令函数system,exec,passthru的区别和用法详解
- Perl执行shell命令的几种方式及其区别
- perl 调用外部命令之system,exec,“反引号
- perl 调用外部命令之system,exec,“反引号
- 外部碎片和内部碎片的区别以及管理方式
- 关于Android中Java调用外部命令的三种方式
- QProcess调用外部程序方式的差异
- 私有内部类的外部调用方式
- php和perl的区别
- Perl调用shell命令
- VC中调用外部函数的命令
- 标准java调用外部命令的写法
- 三层架构的初步了解
- 模式识别 - 恐怖视频特征训练器 部分实现
- Windows ubuntu共享文件夹 VMware Tools安装 su命令
- (leetcode)Max Points on a Line
- VC++对XML文件操作
- Perl调用外部命令的方式和区别
- poj1837
- 总结如何实现Android浮动层,主要是dialog的使用
- Android手机拍照后照片被旋转的解决
- 2014年4月清明节厦门之旅
- Linux系统故障排查和修复技巧
- ReportStudio入门教程(二十四) - 在报表中引入参数的内容
- 来自腾讯无线研发的经验分享
- Poj 3154Graveyard