|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2005-04-01 14:46 UTC] chris at fragzzhost dot com
[2005-04-08 01:08 UTC] iliaa@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 22:00:01 2025 UTC |
Description: ------------ In the 5.0.4 release of PHP, the original proc_get_status bug (32210) doesn't appear to be fixed (Linux babe.fragzzhost.com 2.6.8.1 #1 SMP Tue Oct 12 08:27:04 CEST 2004 i686 i686 i386 GNU/Linux). The "running" field now is always TRUE. I know absolutely nothing about how this bit of code works, but I made the following change and it was fixed. Hopefully someone understands how this fluke works :) Original code (note not as posted code) if (WIFSTOPPED(wstatus)) { stopped = 1; stopsig = WSTOPSIG(wstatus); } } else { running = 0; } #endif My dreadful change: if (WIFSTOPPED(wstatus)) { stopped = 1; stopsig = WSTOPSIG(wstatus); } } else { running = 1; } #endif I would also like to add that the original patch below doesn't appear to work correctly? Immediately after I kill the process manually with kill -9, running is FALSE as expected, but then if I sleep(2) then call proc_get_status() again, running is TRUE, and the process described isn't running. Reproduce code: --------------- (Best run from the command line) $handle = proc_open("sleep 60", array(2 => array("pipe", "r")), $pipes); $status = proc_get_status($handle); var_dump($status["running"]); sleep(5); (confirmed at this stage that process is still running by 'ps aux') system('kill -9 '.$status['pid']); sleep(2); $status = proc_get_status($handle); var_dump($status["running"]); Expected result: ---------------- bool(false) bool(false)