第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;
}
posted @ 2013-10-11 08:45  新闻官  阅读(165)  评论(0编辑  收藏  举报