2012-02-09 13 views
2

私はPythonアプリケーションでプログラムを実行したいです、それはバックグラウンドで実行されますが、最終的にフォアグラウンドに来ます。Python:fork、pipe and exec

GUIを使用して対話します。しかし、コントロールはstdinとstdoutのコンソールを介して提供されています。

  • それらにアクセスするために

    • フォーク
    • 親、dup2のの標準入力と標準出力に子供
    • をexecし:私は私の最初のアイデアだったので、自分のアプリケーションのGUIを使用して、それを制御できるようにしたいです

    これはPythonで簡単に実装できますか?私が欲しいものを達成するための代替方法はありますか?

  • +1

    の答えは「はい」と「はい」です。あなたが書いた質問に対する回答は役に立たないようです。あなたが知りたいことを明確にするため**あなたの質問を更新**してください。 –

    答えて

    6

    これは、標準のPythonサブプロセスモジュールを使用して合理的に簡単です:

    http://docs.python.org/py3k/library/subprocess.html

    +0

    確かに、私はこのように行くつもりです。私は2.Xモジュールを探していましたが、幸いにもそれは長い間存在していました(http://docs.python.org/library/subprocess.html)。 – Aki

    3

    構造が複雑ではありません。

    チェック

    if os.fork(): 
    os._exit(0) 
    os.setsid() 
    os.chdir("/") 
    fd = os.open("/dev/null", os.O_RDWR) 
    os.dup2(fd, 0) 
    os.dup2(fd, 1) 
    os.dup2(fd, 2) 
    if fd 2: 
    os.close(fd) 
    

    このPythonのコードは、IDを設定ディレクトリを変更するこの例では、ファイルやプロセスと密接にオープン!

    +0

    これはおそらくC言語でどのように行うのですか?しかし、Pythonにはこれを簡単に移植可能な方法で実現するためのいくつかのモジュールがあることを願っています。 – Aki