Rumah > Soal Jawab > teks badan
Laksanakan tiga arahan berikut pada terminal bash pada masa ini:
1:php test.php >> test.log
2:python test.py >> test.log
3:sh test.sh >> test.log
Dan laksanakan dalam tetingkap lain:tail -f test.log
1 php dan 3 bash boleh ditulis dalam test.log dalam masa nyata,
Tetapi kenapa python hanya menulis dalam test.log selepas program python tamat?
Dan seperti ini:
gema "cd $test_dir && /usr/bin/python test.py &" >> test_py.sh && sh test_py.sh
Memasukkan python ke dalam skrip sh juga tidak akan berfungsi
Lampiran:
1 ujian.php
<?php
$i = 1;
manakala (Benar) {
tidur(1);
cetak $i++ "\r\n";
jika ($i > 10) {
pecah;
}
}
?>
2 test.py
#!/usr/bin/python
#coding=utf-8
masa import
i = 1
manakala Benar:
i += 1
cetak i
time.sleep(1)
jika saya >
rehat
cetak "----------akhir-----------"
3 test.sh
#!/usr/bin/env bash
# cd /Users/cg/MyFiles/test && /usr/bin/python cgcg.py &
i=1
manakala [[ 1 ]];
tidur 1
i=`expr $i + 1`
bergema $i
selesai
phpcn_u15822017-05-16 13:10:29
Saya ingin tahu, mengapakah PHP tidak melakukan penimbalan blok dalam kes ini?
Python Jika anda ingin segera melihat output standard peranti selain terminal, anda boleh sama ada siram sendiri (print(..., flush=True)
atau gunakan sys dalam Python 2 .stdout.flush
), sama ada gunakan python -u
untuk menjalankan skrip atau anda boleh menggantikan sys.stdout
. print(..., flush=True)
或者 Python 2 里用 sys.stdout.flush
),要么使用 python -u
来运行脚本,要么你去把 sys.stdout
替换掉。
通常,对标准输出(以及其它除标准错误之外的文件)的输出,默认是带缓冲的,你可以看一下这个教程。对于终端是行缓冲,对于其它设备是块缓冲。标准错误一般是无缓冲的。
如果要写日志,或者做基于行的持续性输出的话,记得设置相应的缓冲模式(open
函数的 buffer 参数),或者在合适的地方调用 .flush()
open
), atau panggil .flush() dalam yang sesuai letak
kaedah. 🎜