php exec работает с консолью и вводом - PullRequest
1 голос
/ 15 февраля 2012

Например, я хочу изменить время ПК в консоли.

C:\Users\user>time
The current time is: 15:25:21,04
Enter the new time:

PHP:

exec('time', $out, $ret);
/*
$out = 
The current time is: 15:25:21,04
Enter the new time:
*/

Как отправить новое время?

Upd

Без 1-строчных команд echo <timestring> | time

#Thx to reox
#Working example:
$next_hour = date('H:i:s', strtotime('+1 hour'));
$command = 'time';
$handle = popen($command, 'r');
echo 'Command responce: <br>';
while($line = fgets($handle)) {
    echo $line;
    echo '<br>';
}
pclose($handle);
$handle = popen($command, 'w');
fputs($handle, $next_hour);
pclose($handle);

1 Ответ

1 голос
/ 15 февраля 2012

Консольное приложение time ожидает ввода при стандартном вводе (STDIN), это стандартный ввод для консольных приложений (поэтому это верно и для любого другого стандартного приложения с командной строкой (CLI), а не только для времени):

exec('echo <timestring> | time', $out, $ret);

Если нужно, трюк, символ трубы | перенаправляет вывод с echo как ввод на time.Это общий принцип для Windows и Unix.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...