【发布时间】:2019-03-30 19:04:19
【问题描述】:
我正在将 php 进程(cli 模式)的标准输出重定向到一个文件。
为什么磁盘已满时退出代码为 0。
我可以在 php 7.1/5.6/5.4 以及 macos 和 centos 中重新出现这个问题。
leojins-MacBook-Pro-2:Downloads leojin$ php test.php > /Volumes/disk_test/test.log
leojins-MacBook-Pro-2:Downloads leojin$ echo $?
0
leojins-MacBook-Pro-2:Downloads leojin$ df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1s1 233Gi 27Gi 205Gi 12% 580000 9223372036854195807 0% /
devfs 189Ki 189Ki 0Bi 100% 654 0 100% /dev
/dev/disk1s4 233Gi 1.0Gi 205Gi 1% 1 9223372036854775806 0% /private/var/vm
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home
/dev/disk2s1 95Mi 93Mi 1.5Mi 99% 96 9223372036854775711 0% /Volumes/disk_test
以下是test.php的内容:
<?php
$i = 0;
while (true) {
echo "php:" . $i . "\n";
$i++;
}
当我使用 python 时,它按预期以 1 退出。
leojins-MacBook-Pro-2:Downloads leojin$ python test.py > /Volumes/disk_test/test.log
Traceback (most recent call last):
File "test.py", line 3, in <module>
print 'python:' + str(i)
IOError: [Errno 28] No space left on device
leojins-MacBook-Pro-2:Downloads leojin$ echo $?
1
以下是test.py的内容:
i = 0
while True:
print 'python:' + str(i)
i = i + 1
我也试过php -d implicit_flush=0和python -u,没有区别。
【问题讨论】: