string system(string command, integer return)
Функция system (листинг 9.98) ведет себя абсолютно идентично С-функции system. Эта функция выполняет команду, указанную в аргументе command, отсылает результат в браузер и возвращает последнюю строку вывода, сопровождающего выполнение команды. При указании необязательного аргумента return PHP заносит в него возвращаемое командой значение. Если вывод в браузер не требуется, воспользуйтесь функцией exec.
В аргументе command крайне опасно помещать пользовательскую информацию. Пользователи могут передавать значения в виде полей, позволяющих им выполнять свои собственные команды на вашем Web-сервере. Если необходимо выполнить команду, введенную пользователем, полученную информацию необходимо передавать через функцию escapeshellcmd.
Сравните эту функцию с функциями exec, passthru и shell_exec.

j Листинг 9.98. Функция system_
<?php
// list files in directory print("<pre>"); system("ls -l"); print("</pre>");

 ?> 
9.7. Управление процессами
Функции управления процессами для обработки сигналов работают с функциями ОС Unix. С сигналами можно работать с помощью программы CLI, входящей в состав PHP и работающей только на платформе Unix. Тема сигналов в этой книге в полной мере не освещается, но ей всегда уделяется внимание в любой книге, посвященной программированию в Unix.
integer pcntl_alarm(integer seconds)
Функция pcntl_alarm устанавливает сигнал SIGALRM после заданного количества секунд. ОС отменяет любой предыдущий сигнал и возвращает количество оставшихся до него секунд.
boolean pcntl_exec(string path, array arguments, array environment)
Функция pcntl_exec (листинг 9.99) выполняет программу. Необязательный массив arguments может содержать любое количество аргументов, передаваемых командной строке. Аргумент environment содержит ассоциативный массив с определениями переменных среды.

Листинг 9.99. Функция pcntl_exec

<?php
pcntl_exec('/bin/ls', array('-a'), array("COLUMNS"=>"40"));
?>

integer pcntl_fork()
Функция pcntl_fork (листинг 9.100) создает порожденный процесс. Она возвращает идентификатор порожденного процесса порождающему процессу. Порожденному процессу возвращается нулевое значение.

Листинг 9.100. Функция pcntlfork

<?php
//создать порожденный процесс $pid = pcntl_fork();
if($pid == 0)
{
//порожденный процесс print(microtime() . " Childn"); //имитация вычисления for($i=0; $i < 10; $i++)
{
$x = pow($i, $i+1);
print(microtime() . " Порожденный процесс работает на
$in");
}
exit(123);
}
elseif($pid > 0) 
{
//порождающий процесс print(microtime() . " Parentn"); //ожидание порожденного процесса pcntl_waitpid($pid, $status); if(pcntl_wifexited($status))
{
$retval = pcntl_wexitstatus($status); print(microtime() . " Порождающий процесс получает
$retvaln");
}
}
else
{
print("Ошибка: порожденный процесс не создан!^");
}
?>