Perl语言入门(第五版) 读书笔记(十)---进程管理
2013-12-19 18:16
155 查看
第十六章 进程管理
1. system函数
system "ls -l \$HOME"; #启用shell子进程
system "netstat -ap &"; #后台运行
system 'for i in * ; do echo ====$i=====; done'
system一般使用一个以上参数,避免调用shell启动子进程
system "tar", "cvf", $tarfile, @dirs;
system "/bin/sh", "-c", $command_line; #多参数启用子进程
system的返回值为命名结果的返回值,一般0为正常,非0为异常
2. exec函数
用法及参数完全和system函数,但是会跳进子程序中不再返回,exec后面的程序永远不会执行;
exec后面只能接die "";
3. 环境变量%ENV
%ENV 环境变量通常从父进程继承来
$ENV{'PATH'} = "";
4. 用反引号捕获输出
my @line = `who`;
5. 将进程视为文件句柄(打开管道)
system启动的都是同步进程,需要等待结束. Perl其实也可以开启异步子进程,并保持通信.
open DATE, "date |" or die "Can't pipe from data:$!\n"; #只读文件句柄,date | your_program
open MAIL, "| mail Jerry" or die "Can't pipe to mail:$!\n"; #只写文件句柄, your_program | mail Jerry
my $now = <DATE>; #读
print MAIL "The time is now $now"; #写, 发送mail
close(MAIL) or die "mail no-zero exit $?" if $?;
6. fork创建子进程
my $pid = fork;
if ( $pid == 0) {
#child process
exec "date";
die "Can't exec date:$!";
}
waitpid($pid, 0); #等待子进程
7. 发送与接收信号
kill INT, $pid or die "Can't not signal SIGINT:$!\n";
$SIG{'INT'} = 'my_int_handle'; # my_int_handle为信号处理函数, %SIG为Perl内置特殊哈希
$SIG{CHLD} = 'IGNORE'; #忽略子进程信号
$SIG{'INT'} = 'DEFAULT'; #设置为缺省处理
1. system函数
system "ls -l \$HOME"; #启用shell子进程
system "netstat -ap &"; #后台运行
system 'for i in * ; do echo ====$i=====; done'
system一般使用一个以上参数,避免调用shell启动子进程
system "tar", "cvf", $tarfile, @dirs;
system "/bin/sh", "-c", $command_line; #多参数启用子进程
system的返回值为命名结果的返回值,一般0为正常,非0为异常
2. exec函数
用法及参数完全和system函数,但是会跳进子程序中不再返回,exec后面的程序永远不会执行;
exec后面只能接die "";
3. 环境变量%ENV
%ENV 环境变量通常从父进程继承来
$ENV{'PATH'} = "";
4. 用反引号捕获输出
my @line = `who`;
5. 将进程视为文件句柄(打开管道)
system启动的都是同步进程,需要等待结束. Perl其实也可以开启异步子进程,并保持通信.
open DATE, "date |" or die "Can't pipe from data:$!\n"; #只读文件句柄,date | your_program
open MAIL, "| mail Jerry" or die "Can't pipe to mail:$!\n"; #只写文件句柄, your_program | mail Jerry
my $now = <DATE>; #读
print MAIL "The time is now $now"; #写, 发送mail
close(MAIL) or die "mail no-zero exit $?" if $?;
6. fork创建子进程
my $pid = fork;
if ( $pid == 0) {
#child process
exec "date";
die "Can't exec date:$!";
}
waitpid($pid, 0); #等待子进程
7. 发送与接收信号
kill INT, $pid or die "Can't not signal SIGINT:$!\n";
$SIG{'INT'} = 'my_int_handle'; # my_int_handle为信号处理函数, %SIG为Perl内置特殊哈希
$SIG{CHLD} = 'IGNORE'; #忽略子进程信号
$SIG{'INT'} = 'DEFAULT'; #设置为缺省处理
相关文章推荐
- 读书笔记----进程管理(2.6内核)之一
- 第三章读书笔记——进程管理
- 操作系统原理Linux篇 读书笔记(2)——Linux进程管理
- Linux内核设计与实现——读书笔记2:进程管理
- Perl语言入门(第五版) 读书笔记(七)---目录操作
- 《Linux内核的设计与实现》读书笔记(三)---进程管理
- 2013337朱荟潼 Linux第三章读书笔记——进程管理
- 《linux内核设计与实现》读书笔记---进程管理
- Perl语言入门(第五版) 读书笔记(八)---字符串与排序
- 读书笔记-操作系统-概论和进程管理-1
- 操作系统——进程管理2-读书笔记
- Perl语言入门(第五版) 读书笔记(一)---列表、数组、子程序
- Perl语言入门(第五版) 读书笔记(二)---输入与输出、文件读写
- Perl语言入门(第五版) 读书笔记(五)---其他控制结构、Perl模块
- 《Linux内核设计与实现》读书笔记 第三章 进程管理
- Perl语言入门(第五版) 读书笔记(六)---文件测试
- 《Linux内核设计与实现》读书笔记(一)--进程管理
- 【读书笔记】【linux kernel development】【进程管理】
- 《Unix内核源码剖析》读书笔记02-进程管理【父进程与子进程】
- Perl语言入门——进程管理