diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-02-12 10:10:36 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-02-12 10:10:36 +0100 |
commit | d406751e49fedd80ee2539dde54b923f952f1320 (patch) | |
tree | 8bfdfbe9f776e110b5d4e6f5c226449688eee231 | |
parent | 8dc7d22747970c813e53b332bad6784a367e3cfc (diff) | |
parent | 120137ca148134b9796dbc511a49df8d5f6018e2 (diff) | |
download | php-git-d406751e49fedd80ee2539dde54b923f952f1320.tar.gz |
Merge branch 'PHP-7.4'
-rw-r--r-- | ext/pcntl/pcntl.c | 6 | ||||
-rw-r--r-- | ext/pcntl/tests/pcntl_realtime_signal.phpt | 20 |
2 files changed, 26 insertions, 0 deletions
diff --git a/ext/pcntl/pcntl.c b/ext/pcntl/pcntl.c index 7a06e82398..e4f940eb02 100644 --- a/ext/pcntl/pcntl.c +++ b/ext/pcntl/pcntl.c @@ -1265,6 +1265,12 @@ static void pcntl_siginfo_to_zval(int signo, siginfo_t *siginfo, zval *user_sigi break; #endif } +#if defined(SIGRTMIN) && defined(SIGRTMAX) + if (SIGRTMIN <= signo && signo <= SIGRTMAX) { + add_assoc_long_ex(user_siginfo, "pid", sizeof("pid")-1, siginfo->si_pid); + add_assoc_long_ex(user_siginfo, "uid", sizeof("uid")-1, siginfo->si_uid); + } +#endif } } /* }}} */ diff --git a/ext/pcntl/tests/pcntl_realtime_signal.phpt b/ext/pcntl/tests/pcntl_realtime_signal.phpt new file mode 100644 index 0000000000..212f15e03b --- /dev/null +++ b/ext/pcntl/tests/pcntl_realtime_signal.phpt @@ -0,0 +1,20 @@ +--TEST-- +pcntl_signal() context of realtime signal +--SKIPIF-- +<?php if (!defined('SIGRTMIN')) die("skip realtime signal not supported"); ?> +<?php if (!extension_loaded("pcntl")) print "skip"; ?> +<?php if (!extension_loaded("posix")) die("skip posix extension not available"); ?> +--FILE-- +<?php + +pcntl_signal(SIGRTMIN, function ($signo, $siginfo) { + printf("got realtime signal from %s, ruid:%s\n", $siginfo['pid'] ?? '', $siginfo['uid'] ?? ''); +}); +posix_kill(posix_getpid(), SIGRTMIN); +pcntl_signal_dispatch(); + +echo "ok\n"; +?> +--EXPECTF-- +%rgot realtime signal from \d+, ruid:\d+%r +ok |