system 函数:[oracle@jhoa 10]$ cat 1.pl system "date";[oracle@jhoa 10]$ perl 1.pl Sat Oct 11 15:39:51 CST 2014[oracle@jhoa 10]$ cat 1.pl system "sleep 60";[oracle@jhoa ~]$ ps -ef | grep 1.ploracle 8796 7930 0 15:40 pts/0 00:00:00 perl 1.ploracle 8835 8801 0 15:40 pts/1 00:00:00 grep 1.pl[oracle@jhoa ~]$ ps -ef | grep 8796oracle 8796 7930 0 15:40 pts/0 00:00:00 perl 1.ploracle 8797 8796 0 15:40 pts/0 00:00:00 sleep 60oracle 8837 8801 0 15:40 pts/1 00:00:00 grep 8796[oracle@jhoa ~]$ ps -ef | grep 8797oracle 8797 8796 0 15:40 pts/0 00:00:00 sleep 60oracle 8839 8801 0 15:40 pts/1 00:00:00 grep 8797会创建一个子进程来运行sleep 命令,并且它继承了Perl的标准输入,标准输出和标准出错[oracle@jhoa 10]$ cat 2.pl unless (system "date") {print "$!\n";print "We gave you a date,Ok!\n";}[oracle@jhoa 10]$ perl 2.pl Sat Oct 11 16:15:01 CST 2014We gave you a date,Ok! *** 作符的返回值是根据子进程的结束状态来决定的,在Unix里,退出值0代表正常,非0值则代表有问题0在Perl里代表假exec 函数到目前为止,我们提到的system函数的所有语法也都适用于exec函数。当然有一个重要的例外,system函数会创建子进程,子进程会在Perl睡眠期间执行任务。而exec 函数却导致Perl进程自己去执行任务。这类似于程序调用与goto的差别[oracle@jhoa 10]$ cat 3.pl unless (exec "sleep 60") {print "$!\n";print "We gave you a date,Ok!\n";}[oracle@jhoa ~]$ ps -ef | grep sleeporacle 9014 7930 0 16:47 pts/0 00:00:00 sleep 60oracle 9016 8801 0 16:47 pts/1 00:00:00 grep sleep[oracle@jhoa ~]$ ps -ef | grep 7930oracle 7930 7929 0 09:15 pts/0 00:00:00 -bashoracle 9014 7930 0 16:47 pts/0 00:00:00 sleep 60oracle 9020 8801 0 16:47 pts/1 00:00:00 grep 7930exec 函数却导致Perl进程自己去执行任务。[oracle@jhoa 10]$ perl 4.pl Sat Oct 11 16:55:23 CST 2014[oracle@jhoa 10]$ cat 4.pl exec "date";system "ls";[oracle@jhoa 10]$ perl 4.pl Sat Oct 11 16:55:28 CST 2014exec 后面写的任何代码都无法运行总结
以上是内存溢出为你收集整理的perl system和exec 调用全部内容,希望文章能够帮你解决perl system和exec 调用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)