<?php
0 => array("pipe", "r"), // stdin - канал, из которого дочерний процесс будет читать 1 => array("pipe", "w"), // stdout - канал, в который дочерний процесс будет записывать 2 => array("pipe", "w") // stderr - файл для записи );
$cwd = '/';
$env = array('some_option' => 'aeiou');
$process = proc_open('cat --jkhdkf', $descriptorspec, $pipes, $cwd, $env);
// $pipes теперь выглядит так:
// 0 => записывающий обработчик, подключенный к дочернему stdin
// 1 => читающий обработчик, подключенный к дочернему stdout
// 2 => читающий обработчик, подключенный к дочернему stderr
// Важно закрывать все каналы перед вызовом
// proc_close во избежание мертвой блокировки
echo "команда вернула $return_value\n";
}
PD9waHAKJGRlc2NyaXB0b3JzcGVjID0gYXJyYXkoCiAgIDAgPT4gYXJyYXkoInBpcGUiLCAiciIpLCAgLy8gc3RkaW4gLSDQutCw0L3QsNC7LCDQuNC3INC60L7RgtC+0YDQvtCz0L4g0LTQvtGH0LXRgNC90LjQuSDQv9GA0L7RhtC10YHRgSDQsdGD0LTQtdGCINGH0LjRgtCw0YLRjAogICAxID0+IGFycmF5KCJwaXBlIiwgInciKSwgIC8vIHN0ZG91dCAtINC60LDQvdCw0LssINCyINC60L7RgtC+0YDRi9C5INC00L7Rh9C10YDQvdC40Lkg0L/RgNC+0YbQtdGB0YEg0LHRg9C00LXRgiDQt9Cw0L/QuNGB0YvQstCw0YLRjCAKICAgMiA9PiBhcnJheSgicGlwZSIsICJ3IikgLy8gc3RkZXJyIC0g0YTQsNC50Lsg0LTQu9GPINC30LDQv9C40YHQuAopOwoKJGN3ZCA9ICcvJzsKCiRlbnYgPSBhcnJheSgnc29tZV9vcHRpb24nID0+ICdhZWlvdScpOwoKJHByb2Nlc3MgPSBwcm9jX29wZW4oJ2NhdCAtLWpraGRrZicsICRkZXNjcmlwdG9yc3BlYywgJHBpcGVzLCAkY3dkLCAkZW52KTsKCmlmIChpc19yZXNvdXJjZSgkcHJvY2VzcykpIHsKICAgIC8vICRwaXBlcyDRgtC10L/QtdGA0Ywg0LLRi9Cz0LvRj9C00LjRgiDRgtCw0Lo6CiAgICAvLyAwID0+INC30LDQv9C40YHRi9Cy0LDRjtGJ0LjQuSDQvtCx0YDQsNCx0L7RgtGH0LjQuiwg0L/QvtC00LrQu9GO0YfQtdC90L3Ri9C5INC6INC00L7Rh9C10YDQvdC10LzRgyBzdGRpbgogICAgLy8gMSA9PiDRh9C40YLQsNGO0YnQuNC5INC+0LHRgNCw0LHQvtGC0YfQuNC6LCDQv9C+0LTQutC70Y7Rh9C10L3QvdGL0Lkg0Log0LTQvtGH0LXRgNC90LXQvNGDIHN0ZG91dAogICAgLy8gMiA9PiDRh9C40YLQsNGO0YnQuNC5INC+0LHRgNCw0LHQvtGC0YfQuNC6LCDQv9C+0LTQutC70Y7Rh9C10L3QvdGL0Lkg0Log0LTQvtGH0LXRgNC90LXQvNGDIHN0ZGVycgoKICAgIGZ3cml0ZSgkcGlwZXNbMF0sICc1Jyk7CiAgICBmY2xvc2UoJHBpcGVzWzBdKTsKCiAgICBlY2hvIHN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzFdKTsKICAgIGZjbG9zZSgkcGlwZXNbMV0pOwoKICAgIGVjaG8gIlxuLS0tLS0tLS0tLS1cbnN0ZGVycjogXG4iLnN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzJdKTsKICAgIGZjbG9zZSgkcGlwZXNbMl0pOwogICAgLy8g0JLQsNC20L3QviDQt9Cw0LrRgNGL0LLQsNGC0Ywg0LLRgdC1INC60LDQvdCw0LvRiyDQv9C10YDQtdC0INCy0YvQt9C+0LLQvtC8CiAgICAvLyBwcm9jX2Nsb3NlINCy0L4g0LjQt9Cx0LXQttCw0L3QuNC1INC80LXRgNGC0LLQvtC5INCx0LvQvtC60LjRgNC+0LLQutC4CiAgICAkcmV0dXJuX3ZhbHVlID0gcHJvY19jbG9zZSgkcHJvY2Vzcyk7CgogICAgZWNobyAi0LrQvtC80LDQvdC00LAg0LLQtdGA0L3Rg9C70LAgJHJldHVybl92YWx1ZVxuIjsKfQ==