国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

php - Linux プロセスの出力リダイレクトの問題について質問しますか?
過去多啦不再A夢
過去多啦不再A夢 2017-05-16 13:08:29
0
1
458

現(xiàn)在、bash ターミナルで次の 3 つのコマンドを実行します。
1:
php test.php >> test.log

2:
python test.py >> test.log

3:
sh test.sh >> test.log

別のウィンドウで次のコマンドを実行します。
tail -f test.log

1 つの php と 3 つの bash をリアルタイムで test.log に書き込むことができます。

しかし、なぜ Python は Python プログラムの終了後にのみ test.log に書き込むのでしょうか?
そして次のようになります。

echo "cd $test_dir && /usr/bin/python test.py &" >> test_py.sh && sh test_py.sh

sh スクリプトに Python を入れても機能しません

添付ファイル:
1 test.php

<?php
    $i = 1;
    while (真) {
        スリープ(1);
        $i++ を出力します。 "\r\n";
        if ($i > 10) {
            壊す;
        }
    }
?>

2 test.py

#!/usr/bin/python
#coding=utf-8

インポート時間

i=1
True の場合:
    私 += 1
    私を印刷します
    時間.睡眠(1)
    私が 10 より大きい場合:
        壊す
print "----------終了----------"

3 test.sh

#!/usr/bin/env bash
# cd /Users/cg/MyFiles/test && /usr/bin/python cgcg.py &
i=1
[[ 1 ]] を実行します。
    睡眠1
    i=`expr $i + 1`
    エコー $i
終わり
過去多啦不再A夢
過去多啦不再A夢

全員に返信(1)
phpcn_u1582

気になるのですが、この場合、PHP はなぜブロック バッファリングを実行しないのでしょうか?

Python ターミナル以外のデバイスの標準出力をすぐに確認したい場合は、自分でフラッシュするか (print(..., flush=True) 或者 Python 2 里用 sys.stdout.flush),要么使用 python -u 來運行腳本,要么你去把 sys.stdout置き換えます。

)

通常、標準出力 (および標準エラーを除くその他のファイル) への出力はデフォルトでバッファリングされます。このチュートリアルを參照してください。これは、端末の場合はライン バッファリング、その他のデバイスの場合はブロック バッファリングです。標準エラーは通常、バッファリングされません。

ログを書き込んだり、行ベースの連続出力を実行したい場合は、対応するバッファリング モード (open 函數(shù)的 buffer 參數(shù)),或者在合適的地方調用 .flush() メソッド。

) を設定することを忘れないでください。
いいねを押す +0
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート