Убить родителей процесса в переполнении стека

Я пытаюсь остановить процесс, убив его, но чтобы избежать зомби, я должен убить ppid перед тем, как убить pid, вот мой код для уничтожения pid:

$descriptorspec = array(array("pipe", "r"), array("pipe", "w"), array("pipe", "a"));
$process = proc_open("MyProcessCommand", $descriptorspec, $pipes);
$status = proc_get_status($process);
$pid = $status['pid'];//Get the process id

{..}

$descriptorspec = array(array("pipe", "r"), array("pipe", "w"), array("pipe", "a"));
proc_open("exec kill -9 $pid", $descriptorspec, $pipes); // killing the pid
return new JsonResponse('Process Stopped');

Итак, я попробовал это, чтобы получить ppid, но, похоже, не работает:

$descriptorspec = array(array("pipe", "r"), array("pipe", "w"), array("pipe", "a"));
$process = proc_open("MyProcessCommand", $descriptorspec, $pipes);
$status = proc_get_status($process);
$pid = $status['pid'];//Get the process id

{..}

    $descriptorspec = array(array("pipe", "r"), array("pipe", "w"), array("pipe", "a"));

$ppid = proc_open("exec ps -o ppid= $pid", $descriptorspec, $pipes);

proc_open("exec kill -9 $ppid", $descriptorspec, $pipes);
proc_open("exec kill -9 $pid", $descriptorspec, $pipes); // killing the pid
return new JsonResponse('Process Stopped');

Есть ли другой способ получить ppid? или убить процесс, не выходя из процесса зомби?

1

Решение

используйте это, это будет работать

    $ppid=shell_exec("ps -o ppid= $pid");
$int = (int)$ppid;
var_dump($int);
shell_exec("exec kill -9 $ppid");
usleep(300);
shell_exec("exec kill -9 $pid");
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]