summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-02-12 10:10:36 +0100
committerNikita Popov <nikita.ppv@gmail.com>2019-02-12 10:10:36 +0100
commitd406751e49fedd80ee2539dde54b923f952f1320 (patch)
tree8bfdfbe9f776e110b5d4e6f5c226449688eee231
parent8dc7d22747970c813e53b332bad6784a367e3cfc (diff)
parent120137ca148134b9796dbc511a49df8d5f6018e2 (diff)
downloadphp-git-d406751e49fedd80ee2539dde54b923f952f1320.tar.gz
Merge branch 'PHP-7.4'
-rw-r--r--ext/pcntl/pcntl.c6
-rw-r--r--ext/pcntl/tests/pcntl_realtime_signal.phpt20
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