你所执行的是
echo hello > /dev/pts/2 | /usr/bin/at 19:36
意思
echo hello > /dev/pts/2
和管道 stddout 到 /usr/bin/at 19:36
但既然您已经将回声重定向到 / dev/pts/2
, 这将是空的。 您可能想要做的是 :
echo system("echo echo hello > /dev/pts/2 | /usr/bin/at 19:36");
您也可以使用 shell_ exec
通过 shell 或 proc_open
通过 shell 或 通过 shell 或 通过 code > proc_open
传递命令, 使您更好地控制您执行的命令的 stdin/ out/ err。 您的示例将相应于( 来自 php. net docs 的适应示例 ) :
<?php
$descriptorspec = array(
0 => array("pipe", "r"), // stdin is a pipe that the child will read from
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
2 => array("pipe", "w") // stderr is a pipe that the child will write to
);
$process = proc_open( /usr/bin/at , $descriptorspec, $pipes);
if (is_resource($process)) {
fwrite($pipes[0], echo "hello" > /dev/pts/2 );
fclose($pipes[0]);
$stdout = stream_get_contents($pipes[1]);
fclose($pipes[1]);
$stderr = stream_get_contents($pipes[2]);
fclose($pipes[2]);
$return_value = proc_close($process);
echo "command returned $return_value. stdout: $stdout, stderr: $stderr
";
} else {
echo "Process failed";
}
?>