进程管理
上一篇 /
下一篇 2008-11-17 21:45:13
/ 个人分类:perl
- 文件版本: V1.0
- 开发商: 本站原创
- 文件来源: 本地
- 界面语言: 简体中文
- 授权方式: 免费
- 运行平台: Win9X/Win2000/WinXP
通过perl直接启动其它程序。51Testing软件测试网!j1x9dH:n`
9t5jr!U5H%o"]0system函数51Testing软件测试网t#]fq2\1g8@9C`{N
system "date"; 启动unix系统的date命令。51Testing软件测试网5I"a_PqN.Y;UF[2O
子进程会运行date命令,它将继承perl的标准输入,标准输出和标准错误。
v }2jPB&[Z H |d0system 'ls -l $HOME'; 注意是用单引号,因为$HOME是shell变量,否则,shell就看不到美元符号。表明要替换的符号。
XPOXhZ'^0system "long_time_command&"; 把长时间运行的程序放在后台。51Testing软件测试网KB$FU1LY
system 'for i in *; do echo ==$1 ==; cat $i; done'; 可以写脚本
+E4kr D.rj6t7[t0
#u+j-pmzy0避免shell51Testing软件测试网G@9j(D
_ xd
调用system操作符时带多个参数,此时shell就不会卷入。如:51Testing软件测试网g#T._]9i[ m"k3[E
system "tar","cvf",$aaa,@bbb; 第一个命令是tar,其余的参数会一个一个传递给它。51Testing软件测试网8\M:a} rS1x
] Q
system的退出状态基于子进程的退出状态。在unix中0表示正常,非0表示出错。51Testing软件测试网;TmF,M0]&B9ae ~
unless (system "date") { 返回0表示成功
b;N*y'd/[}'zq4C0 print "we gave you a date,ok!\n";
}^)K9V&S$| _@0 }
W-D'Z;A/TUM aZ051Testing软件测试网4Q8PR(J)]
exec函数
`,kJd!k0与system差不多,system会生成一个子进程,exec是让perl进程本身去处理所要求的动作。51Testing软件测试网{*cI#y
ha
一般用system就可以了。51Testing软件测试网!Mz9B)jkFR,t
51Testing软件测试网^Gxl9a2Qd$k+VMI
环境变量
8@k9Q ]A cxu0当你启动一个新进程时,环境变量就被继承下来了。在perl中,通过特殊的%ENV散列得到环境变量,散列中每个键表示一个环境变量。在你的程序刚开始执行时,%ENV就从父进程(通常是shell)继承而来。修改这个散列就改变了环境变量,它又会被新进程继承。$ENV {'PATH'} = "/home/mydir/bin:$ENV{'PATH'}"; 设置新的环境变量,增加了一个路径51Testing软件测试网9i^+[o9C?(w/Vj!i
delete $ENV{"IFS"}; 删除“IFS”这个路径
)y6sk-F9HWdx;I0my $make_result = system "make"; 在新环境变量中执行程序51Testing软件测试网{6Qd:e,vc
/ncu$\qds0使用反引号捕获输出51Testing软件测试网Q^'v/\KR5JPs2Y
当使用system and exec时,所启动命令的输出都被送到perl的标准输出上。有时我们需捕获这些输出。51Testing软件测试网w,],y1W/k6nz7n4H4kT
my $now = `date`;