第16章进程管理习题
1. 写一个程序,让它进入某个特定的目录,比如系统根目录。
然后执行ls -l 命令获得该目录内的长格式目录列表。
use 5.016; use autodie; chdir "/" ; exec "ls","-l";
2. 修改前面的程序,让它将命令的输出送到当前目录下的ls.out文件,错误输出则到ls.err文件
use 5.016; use autodie; open STDOUT,">","ls.out"; open STDERR,">","ls.err"; chdir "/" ; exec "ls","-l";
3. 写一个程序,用它解析date命令的输出并判断今天是星期几。如果是工作日,输出get to work,否则输出go play。
use 5.016; use autodie; if (`date` =~ /^(Sat|Sun)/) { say "go play"; } else { say "get to work"; }
4. 写一个无限循环程序,让它捕获信号报告之前收到过该信号的次数。如果收到INT信号就退出程序。
use 5.016; use autodie; sub my_hup_handler {state $n; say 'Caught HUP:' , ++$n } sub my_usr1_handler {state $n; say 'Caught USR1:', ++$n } sub my_usr2_handler {state $n; say 'Caught USR2:', ++$n } sub my_int_handler {say 'Caught INT. Exiting.'; exit } say "I am $$"; foreach my $signal ( qw{ hup usr1 usr2 int } ) { $SIG{uc $signal} = "my_${signal}_handler"; } while(1) { sleep 1; }