perl-5.34.0
waitpid PID,FLAGS

Waits for a particular child process to terminate and returns the pid of the deceased process, or -1 if there is no such child process. A non-blocking wait (with WNOHANG in FLAGS) can return 0 if there are child processes matching PID but none have terminated yet. The status is returned in $? and ${^CHILD_ERROR_NATIVE}.

��劫����勐�������㏍�祉�鴻��腟�篋���������勉��緇���<��羔�羯������������㏍�祉�鴻�� pid ��� 菴������障��; ���絎�������絖������㏍�祉�鴻��絖���������ŝ����������˨�壔��-1 ���菴������障����� (FLAGS ��� WNOHANG ������絎�������) ��������㏍����㏍�潟�� wait ��壔�� PID ��������������潟�違�����絖������㏍�祉�鴻�������⓾����障��腟�篋������⓾����ŝ����翫����� 0 ��� 菴���������������������障����� ��鴻����若�帥�鴻�� $? �� ${^CHILD_ERROR_NATIVE} ��̬����������障�����

A PID of 0 indicates to wait for any child process whose process group ID is equal to that of the current process. A PID of less than -1 indicates to wait for any child process whose process group ID is equal to -PID. A PID of -1 indicates to wait for any child process.

PID ��� 0 ������絎������������������㏍�祉�鴻�違�˨�若�� ID ����憜����勉����㏍�祉�鴻����������с����� 篁紙����勐�������㏍�祉�鴻�� wait �����障����� PID ��� -1 篁ヤ��������絎������������������㏍�祉�鴻�違�˨�若�� ID ��� -PID ��̥�������� 篁紙����勐�������㏍�祉�鴻�� wait �����障����� PID ��� -1 ������絎����������篁紙����勐�������㏍�祉�鴻�� wait �����障�����

If you say

篁ヤ����勉�������˨��������

    use POSIX ":sys_wait_h";

    my $kid;
    do {
        $kid = waitpid(-1, WNOHANG);
    } while $kid > 0;

or

��障����

    1 while waitpid(-1, WNOHANG) > 0;

then you can do a non-blocking wait for all pending zombie processes (see "WAIT" in POSIX). Non-blocking wait is available on machines supporting either the waitpid(2) or wait4(2) syscalls. However, waiting for a particular pid with FLAGS of 0 is implemented everywhere. (Perl emulates the system call by remembering the status values of processes that have exited but have not been harvested by the Perl script yet.)

��������������������㏍����壔��莎激�������ŝ����������˨����⓾�������⓾�勐��罘�筝㏍�障�潟�������㏍�祉�鴻�� wait �����障�� ("WAIT" in POSIX ��������с����⓾�����������)��� �����㏍����壔�ŝ����� wait ��壔����激�鴻�������潟�若�� wait_pid(2) ������ ��激�鴻�������潟�若�� wait4(2) �����泣����若�������⓾����������激�潟�у�ñ���櫝�純�с����� �����������ŝ����������劫����� pid ��� 0 ��� FLAGS ��с�� wait ��壔�í����с�� 絎�茖���������⓾����障����� (exit �����������㏍�祉�鴻�勉�鴻����若�帥�劫�ゃ��荀������⓾�������⓾��Perl �����激�鴻�������潟�若�˨�� ��������ャ�㋘�若�������障��������Perl ��鴻�壔�ŝ�������˨�壠�������ャ����������⓾����障��������)

Note that on some systems, a return value of -1 could mean that child processes are being automatically reaped. See perlipc for details, and for other examples.

��激�鴻�������˨����c�⓾�壔��菴������ゃ�� -1 ��勐�翫����壠�������㏍�祉�鴻����ɱ������� ��������������������������������潟�������������������ŝ�����������羈���������⓾�������������� 荅括完��������勌����勌����˨�ゃ����⓾�� perlipc ��������с����⓾��������������

Portability issues: "waitpid" in perlport.

腱紙����с�勐�馹�: "waitpid" in perlport���