如何在命令行中使用php中的行尾字符?

时间:2014-04-03 17:20:05

标签: php bash shell command-line-arguments

我希望用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);
?>

1 个答案:

答案 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到达之后。