Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

SIGCHLD is not always returned from proc_open #11498

Closed
@taka-oyama

Description

@taka-oyama

Description

The following code:

<?phpini_set('display_errors','1');ini_set('display_startup_errors','1');error_reporting(E_ALL);// store processes in an array as [$pid => $process, ...]$processes = [];// catch signals from child processes and unset processes from the arraypcntl_async_signals(true);pcntl_signal(SIGCHLD,function($sig,$info)use (&$processes) {    unset($processes[$info['pid']]);},false);// open 10 processes and store them in an arrayforeach (range(0,10)as$i) {$process =proc_open('echo $$', [],$pipes);// prints the pid to STDOUT$pid =proc_get_status($process)['pid'];$processes[$pid] =$process;}// wait for all processes to exitwhile(true) {echo' processes remaining:' .count($processes) .PHP_EOL;if (empty($processes)) {break;    }sleep(1);}// Check that all processes have been removed.var_dump($processes);

Resulted in this output:

921922 processes remaining:9925926924 processes remaining:8923 processes remaining:6931929927 processes remaining:5928930 processes remaining:2 processes remaining:2 processes remaining:2 processes remaining:2 processes remaining:2 processes remaining:2 processes remaining:2 ...

But I expected this output instead:

837838 processes remaining:10842840 processes remaining:8 processes remaining:7846841 processes remaining:6847 processes remaining:5 processes remaining:4839843 processes remaining:3844 processes remaining:1845 processes remaining:0array(0) {}

There were some rare cases where the script would exit with code 255 with no errors.

root@c09c0fa26c4d:/app# php test.php933934936 processes remaining:8937935 processes remaining:7938939941 processes remaining:5940942943root@c09c0fa26c4d:/app# echo $?255

PHP Version

PHP 8.2.7 (cli) (built: Jun 13 2023 23:05:53) (NTS)

Operating System

Debian GNU/Linux 12

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp