2010-12-23 3 views
1

私はPythonで書かれたGUIアプリケーションを持っています。 GUIの起動後、スタンドアロンデーモンを実行する必要があります。しかし、GUIを閉じるかクラッシュすると、デーモンも終了します。独立して別のアプリケーションを実行する方法はありますか?現在のアプリケーションからスタンドアロンアプリケーションを実行するにはどうすればよいですか?

+0

答えはWindowsとUNIXの間でどのように異なるのですか? – Mark

答えて

1

私はデーモンを起動しませんが、でshell = Trueという別のプログラムを起動するpygtkプログラムがあります。例:

import subprocess 

def callback(self, widget, date=None): 
    cmd = "Your command here" 
    other_process = subprocess.Popen(cmd, shell=True) 

これはボタンに付随するコールバックであるため、ボタンをクリックするとpygtkが処理を行います。最初のpygtk GUIプログラムをシャットダウンしても、2番目のプログラムは動作し続けます。 FWIW、これはCentOS Linuxシステム上にあります。

私は一度TkInterと似たようなことをしましたが、今すぐ利用できるコードはありません。これはWindows XPシステム上にありました。私の思い出は、第1のプロセスが停止した後、第2のプロセスが継続して実行されていることです。

+0

しかし、あなたのGUIが終了すると、 'cmd'もシャットダウンします。これは質問者が直面している問題です。 –

+0

@ Noufal Ibrahim:親guiプロセスを再テストして停止しても、上記とほぼ同じコードを使用して子プロセスが停止するわけではありません。 – GreenMatt

+0

WindowsまたはLinux?私はWindows上で、子プロセスが何らかの形で親から「切断」されていると思うが、UNIXではそれはあなたがそれを "デーモン化"するまでのもう一つの方法である。 –

2

Linuxでは、親プロセス(あなたの場合はGUI)を処理し、サブプロセスまたはos.systemを使用して2番目のpythonプロセスを起動します。 2番目のプロセスはすぐに自身をデーモン化します。それを行うにはhereまたはhereを参照してください。

関連する問題