Perlで学ぶ「詳解 UNIXプログラミング」(その9) 第9章 プロセスの関係
はじめに
「詳解 UNIXプログラミング」の第九章を示します。
9.1 オーファンドプロセスグループの作成
オーファンドとは親のいない状態という意味のようです。
#!/usr/bin/env perl use strict; use warnings; use POSIX; # オーファンドプロセスグループの作成 sub pr_ids { my $name = shift; printf "%s pid=%d ppid=%d pgrp=%d\n" , $name, POSIX::getpid, POSIX::getppid, POSIX::getpgrp; } pr_ids("parent"); my $pid = fork; die "Error: fork $!\n" unless defined $pid; if ($pid != 0) { # parent sleep 5; print "parent finish\n"; exit 0; } else { # child pr_ids("child"); local $SIG{HUP} = sub { printf "SIGHUP received pi4=%d\n", POSIX::getpid; }; kill POSIX::SIGSTOP, POSIX::getpid; pr_ids("child\n"); sleep 1; my $retval = sysread STDIN, my $buf, 1; die "Error sysread $!\n" unless defined $retval; }
まとめ
「詳解 UNIXプログラミング」の第九章を示しました。