我希望用php来读取命令行并将它们写入文件。但是,当我运行以下命令时,如果命令行保留为空,则while循环不会返回。该如何修改?
#!/usr/bin/php
<?php
$file = fopen("/tmp/test", "a");
fwrite($file, "Script successfully ran at ".date("Y-m-d H:i:s")."\n");
// read from stdin
$fd = fopen("php://stdin", "r");
$output = "";
while (!feof($fd)) {
$line = fread($fd, 1024);
$output .= $line;
}
fclose($fd);
fwrite($file, $output);
fclose($file);
?>
答案 0 :(得分:0)
control-c将导致test.php退出
使用stream_set_blocking(),请参阅:http://us3.php.net/manual/en/function.stream-set-blocking.php
获得$ fd后调用stream_set_blocking($ fd,1)
要将在stdin上输入的字符写入$ file,您需要在while循环中执行fwrite,而不是在feof到达之后。