2011-10-30 9 views
0

私のCプログラムがSIGINTによって停止されたときに、パイプが閉じられていることを確認するにはどうしたらいいですか?ctrl + Cでパイプを閉じるには?

+0

OSはプロセスが終了すると、開いているファイルハンドルをすべて閉じます。あなたの問題は何ですか? – Mat

+0

@Mat: 'gnuplot -persist'への私のパイプは、プログラムを強制終了した後も持続しているようです。 – Andreas

+0

'persist'オプションはまさにそのためのものです - 表示プロセスはメインのgnuplotプロセスが終了した後も残ります。パイプを閉じてメインプロセスが終了すると、グラフは表示されません。 – Mat

答えて

2

あなたはそのためのsignal handlingを使用することができます。あなたはSIGINTを扱う場合

#include <signal.h> 

void sigHandler(int sig) { 
    // Respond to the signal here. 
} 

int main(..) { 
    signal(SIGINT, &sigHandler); 
    .. 
} 
1
  • 、あなただけ)(近くに呼び出すことができます。または、物事をそのまま維持し、パイプを開いたままにすることもできます。
  • 信号を処理しないと、プログラムが消滅し、パイプの側面がOSによって自動的に閉じられます。パイプの反対側には、EPIPEまたはゼロまたは-1の読み取りリターンが得られます。
関連する問題