私はLinux用のPythonプログラムを書いています。プログラムは基本的に端末のフィードバックをユーザに提供し、端末の制御権を放棄してバックグラウンドでの実行を続ける必要があります。どうすればこれを達成できますか? プログラムをターミナルの制御を放棄する方法は?
あなたは
1
A
答えて
2
あなたは子プロセスを作成するos.forkを()を使用することができ
:
import os
import time
msg = raw_input("Enter message for child process")
x = os.fork()
if not x:
for i in range(5):
time.sleep(3)
print msg
os.fork()子プロセスに0を返し、及び各そのparetプロセス 注子プロセスIDをプロセスはローカル変数の独自のコピーを取得します。
ホープこれは
+0
シンプルかつエレガント。ありがとうございました – Raphael
1
だけpython-daemonを使用してプログラムをラップありがとうございます。
1
フォークはここで、おそらく行うには正しいことだ助け、より良いdaemonisingが、質問にコメントが示唆するように、スクリプトを変更せずに、ほとんど同じ効果を得るための簡単な方法は(あります単にスクリプトをバックグラウンドに置くだけです)。
しかし、&
は何もしませんが、端末への接続を完全に放棄します。そのため、nohup
を使用します。
(nohup python foo.py >foo-output &)
は、スクリプトをdaemonisingの簡単な方法です。 nohup
は、制御端末が移動したときにプロセスが強制終了されず、スクリプトをサブシェルのバックグラウンドに置くことを意味します。(...)
は終了し、initプロセスの子として終了します。それは実質的に 'デーモン化'が意味することのほとんどです。
これは、元の質問よりも一般的な手法ですが、それでも役に立つと思います。
関連する問題
- 1. プログラムでポップアップメニューの表示を制御する方法は?
- 2. Luaで放棄されたメモリリークを追跡する方法は?
- 3. モデルバインディングを制御する方法は?
- 4. メディアボリュームを制御する方法は?
- 5. フラグメントonResumeを制御する方法は?
- 6. レディアニメーションを制御する方法は?
- 7. ラジオボタングループを制御する方法は?
- 8. cycle2を制御する方法は?
- 9. kivyのカルーセルをプログラムで制御する
- 10. OnResume()でイベントを制御するかどうかを制御する方法は?
- 11. 最新のFirefox WebExtensionでXraysのビジョンを放棄する方法?
- 12. 放棄カートにギフトを追加する方法Shopifyのメール
- 13. Codeigniterのセッションを制御する方法
- 14. matplotlibのマウスオーバーテキストを制御する方法
- 15. waveのrequestAnimationFrameを制御する方法
- 16. junitのログレベルを制御する方法
- 17. ブートストラップテーブルのボタンアクションを制御する方法
- 18. リストビューのフレンドアクションを制御する方法
- 19. 私のweb-uiがCLIプログラムをコミット(または制御)する方法
- 20. PythonでCLIプログラムを制御する
- 21. Spotifyデスクトッププレーヤーをプログラムで制御する
- 22. Chromeをプログラムで制御する
- 23. Magentoが放棄したカートレポートコレクションをフィルタリングする方法
- 24. CUDAプログラムの制御フロー
- 25. C++プログラムの制御フラッシュシステム
- 26. QTプログラムからターミナルでbashスクリプトを起動する方法は?
- 27. 他のプログラムのメニューを制御するプログラムの作成
- 28. ビットレートを制御する方法MEDIASUBTYPE_H264 directshow?
- 29. Android:onSensorChangeサンプリングレートを制御する方法
- 30. バックグラウンドプロセス/デーモンを制御する方法
'python script.py 'のようにスクリプトを実行するだけで、この質問の回答を使ってプロセスをデーモン化することができます:http://stackoverflow.com/questions/473620/how-do-you-create- a-daemon-in-python – Collin