2016-08-11 9 views
0

私はC++、Python 3.5、およびWindows 7を使用しています。現在、サブプロセスを使用しているPythonコードからC++実行可能ファイルを呼び出しています。Pythonサブプロセスから終了したときのC++呼び出し関数

私のC++コードでは、Python呼び出しが終了するときに自分自身で関数を呼び出すことは可能ですか?私は、C++がXボタンまたはそれ自身で閉じられたときに呼び出される関数のオプションを見つけましたが、この質問はあまりにも具体的です。

答えて

0

はあなたのC++最初

p = subprocess.Popen(["path\to\exe"]) 
#... do stuff 
#and when you want to terminate it 
p.terminate() 

のようなものをしなければならないコードを終了することができるように、しかし、それは別のインスタンスを起動ですので、あなたは、それはすぐに殺すだろう再びPopenを呼び出すことはできません:役に立ちません。

プロセスを終了すると、すぐそこでkill -9またはtaskkill /Fのように停止します。あなたが反応するプロセスにチャンスを与えたい場合は、代わりのp.terminate()

Windowsのみことを実行します。

os.system("taskkill /PID "+str(p.pid)) 

Unixの&のWindows(単にドキュメントに読み、それをテストしていない):

os.kill(p.pid,signal.CTRL_BREAK_EVENT) 

/Fフラグを省略すると、C++、いくつかの出口/クリーンアップ手順を実行するためのプログラムとして終了ハンドルを置くことを可能にする)

編集:Cでハンドルを配置する++プログラム(明示的exitを呼び出すときatexitはちょうどその場合には動作していない、と呼ばれている):

(ソース:How can I catch a ctrl-c event? (C++))あなたは、ウィンドウを閉じたときに動作し、

+0

ありがとうを!その場合、私はstd :: atexitを使って関数をcloseで呼び出すことができますか?もしそうでなければ、私のコードはどのようにして殺されるのですか? – OCW

関連する問題