<?php

ini_set
('display_errors'1);
error_reporting(E_ALL|E_STRICT);

$desc = array(
    
=> array('pipe''rb'),
);

$pipes = array();
$proc proc_open('php'$desc$pipes);

$status proc_get_status($proc);
$pid $status['pid'];
echo 
"PID is {$pid}\n";

$read null;
$write = array($pipes[0]);
$execpt null;

// Select pipes for writing. This would normally go in an infinite loop
echo "selecting write pipes\n";
$count stream_select($read$write$exceptnull);
echo 
"got {$count}\n";

// Stop the PHP process prematurely (simulate a program error)
echo "killing pid {$pid}\n";
posix_kill($pid15);
sleep(1);

// The PHP process is stopped. Let's try to write to it.
echo "writing 'test' ...\n";
foreach (
$write as $pipe) {
    
$bytes fwrite($pipe"test\x04");
    echo 
"wrote {$bytes} bytes\n";
}