signal-handling

    13

    2答えて

    私はシグナルを処理するシェルプログラムを作成しています。次のように関連するコードを扱う私の関連する信号は次のとおりです。 #include <signal.h> ... #include <sys/types.h> ... void installSigactions(int, struct sigaction*); void handler_function(int signal_i

    2

    2答えて

    シグナルハンドラを使用する正しい方法は何ですか? このquestionから以下のコードを見て、なぜsignal(SIGSEGV,sig_func);をsig_funcに入れなければならないのだろうと思いますか?プロセスがSIGSEGVシグナルを受信したときにループが終了しないでしょうか? void sig_func(int sig) { write(1, "Caught signal

    7

    2答えて

    の窓に相当 私は、このデコレータを持っている: def timed_out(timeout): def decorate(f): if not hasattr(signal, "SIGALRM"): return f def handler(signum, frame): raise TimedOutExc() @fun

    4

    4答えて

    ソケットを使用するAPIを作成しています。 APIでは、さまざまなアイテムにメモリを割り当てます。私はソケットを閉じて、Ctrl-Cのようなシグナルがある場合にはメモリを解放することを確認したい。これを調べると、free()は安全な関数リスト(man 7シグナル)にないように見えます。したがって、シグナルハンドラ内のメモリを解放することはできません。私はちょうど良いソケットを閉じることができます。

    3

    3答えて

    sem_waitをシグナルハンドラ(特にスレッドごとのSIGSEGVシグナル)で使用できないのはなぜですか?誰かがアプリケーションをクラッシュさせるシナリオの例を教えてもらえますか?私はsem_waitがリエントラントとの両方であり、スレッドセーフであると思います、ここで何が問題なのですか?なぜそれがない非同期の安全?

    4

    3答えて

    私は、SIGINTシグナルハンドラが実装されているPythonモジュールに依存するdjangoアプリケーションを構築しています。 私が依存しているモジュールを変更できないとすれば、どうすれば "シグナルがメインスレッドでのみ動作する"というエラーを回避できますか?エラーをDjangoに統合しますか? Djangoメインスレッドで実行できますか? モジュールが非メインスレッドで実行できるようにハンド

    3

    1答えて

    私はThread::Poolモジュールをperlで使用して、いくつかのperlコードを並列化しています。このプロセスにはしばらく時間がかかり、ときどきコマンドラインからSIGINTを使用して強制終了します。そうすることで、予想通りにプログラムが突然終了します。これは、面倒な一時ファイルを残しているので、私はシグナルハンドラをインストールしたいと思います。私はこれをしました: sub INT_Han

    12

    1答えて

    を削除するには、私は同じ信号を使用する別のシグナルハンドラを設定できるように、どのように私は、この特定のハンドラを削除するか、またはブロックするか、フォローシグナルハンドラに struct sigaction pipeIn; pipeIn.sa_handler = updateServer; sigemptyset(&pipeIn.sa_mask); sa.sa_flags = SA_RES

    2

    2答えて

    私は、次のプログラムに複数のその後のHangup信号を送信する場合、それらの2つだけが処理されると、残りは無視されます。 #include <stdio.h> #include <unistd.h> #include <signal.h> int id; void handler(int s) { id++; int i; for(i=0; i<3; i+

    0

    1答えて

    私は2つのプログラムを持っています。 "MAN"と呼ばれる最初のものは、何らかの方法で終了するまでバックグラウンドで実行されるプロセスである "D"(2番目のもの)を起動します。 しかし私は、とき、今私はDが実行し続けることを望む、私はCtrl + Cを使用してMANを終了しようとすると、それは(私がSIGINTシグナルを傍受)正しく男を終了D. を終了せずMANを終了したいと思いますMANはCT