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プログラミング」の第九章を示しました。