私は名前付きパイプ 'timer_fifo'を持っていますが、pythonスクリプトのstdoutはtimer_fifoにリダイレクトされ、 。stdoutをファイルにリダイレクトすると間違った内容が表示される
のPythonスクリプト:
python above_file_name > timer_fifo
シェルスクリプト:
while true
do
read action <timer_fifo;
echo $action | stdbuf -o0 -e0 -i0 sed -n "s/^\([^[:space:]].*\)/\1 Cinnamon/p" >> activity_file
done
注:
import time
while True:
print(time.strftime('%Y_%m_%d', time.gmtime()))
time.sleep(1)
はPythonスクリプト上で実行上のsedコマンドもappend 'シナモン' と活動ファイルにリダイレクトしたがって、入力が '2017_02_01'であれば '2017_02_01 Cinnamon'になり、入力sは無視されますスペースで始めるならば、おしゃれです。
./file_name
いくつかの時間のために、ファイルの末尾:
2017_02_01 Cinnamon
2017_02_01 Cinnamon
2017_02_01 Cinnamon
2017_02_01 Cinnamon
2017_02_01 Cinnamon
2017_02_01 Cinnamon
2017_02_01 Cinnamon
しかし、ファイルの中に尾の後:
2017_02_01 Cinnamon
2017_02_01 Cinnamon
2017_02_01 Cinnamon
2017_02_01 Cinnamon
017_02_01 Cinnamon
207_20 Cinnamon
270_1 Cinnamon
210_101_2001_20 Cinnamon
2017_02_0 Cinnamon
270_11207_02_01 Cinnamon
107_20 Cinnamon
0020 Cinnamon
を見てのとおり、シェルスクリプト上で実行
なぜ出力が乱れるのでしょうか? また、上記のスクリプトを複数回実行している可能性があります。複数のプロセスが同時に同じファイルに書き込むと、そのソート出力が発生しますか?もしそうなら、理由を説明してください。
Googleでたくさんのものを試してみてください。 – Marichyasana
それは私がここに来る前にしたものです。 – druuu