問題タブ [signals]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
18310 参照

gtk - ユーザーからウィンドウのサイズ変更を検出する GTK

GTK (または pygtk または gtkmm...) で

通常はウィンドウの端をドラッグすることで行われるように、アプリケーション ウィンドウがユーザーによって手動でサイズ変更されたことを検出するにはどうすればよいですか?

ウィンドウの内容の変更など、gtk に起因するサイズ変更と手動のサイズ変更を区別する方法を見つける必要があります。

0 投票する
1 に答える
702 参照

macos - OS X プロセス制御

ヒョウ用のプロセスコントローラーカーネル拡張を書いています。このアプリケーションを使用すると、SIGSUS でプロセスを中断し、コンピューターをスリープ状態にすることができます。私の問題は、ビデオ/オーディオ (iTunes や GarageBand など) を使用するアプリケーションが中断されているときに、コンピューターをスリープ状態にしようとすると、スリープ プロセスがオーディオ/ビデオ アプリケーションの終了を 30 秒のタイムアウトで待機することです。実際には、オーディオ/ビデオ アプリケーションが中断されているときにコンピューターをスリープ状態にしようとすると、コンピューターが 30 秒間ハングした後 (おそらく、中断されたアプリケーションがスリープ要求に応答していない可能性があります)、その後通常どおりスリープします。コンピューターを起動し、SIGCON をビデオ/オーディオ アプリケーションに送信すると、正常に続行されます。

その 30 秒の待機タイムアウトを変更する方法はありますか? それとも、まったく待たないようにしますか?または他の解決策はありますか?

0 投票する
4 に答える
63435 参照

android - Android の JNI で SIGSEGV (セグメンテーション違反) をキャッチしてスタック トレースを取得するにはどうすればよいですか?

私はプロジェクトを新しい Android Native Development Kit (つまり JNI) に移行しています。SIGSEGV が発生した場合 (おそらく SIGILL、SIGABRT、SIGFPE) をキャッチして、適切なクラッシュ レポート ダイアログを表示したいと考えています。 (またはその前に)現在何が起こっているか:プロセスの突然の突然の終了と、おそらくOSによる再起動の試み。(編集: JVM/Dalvik VM はシグナルをキャッチし、スタック トレースやその他の有用な情報をログに記録します。その情報を実際にメールで送信するオプションをユーザーに提供したいだけです。)

状況: 私が書いていない大量の C コードが、このアプリケーション (すべてのゲーム ロジック) のほとんどの作業を行っており、他の多くのプラットフォームで十分にテストされていますが、私の Android でポートは、ガベージをフィードし、ネイティブ コードでクラッシュを引き起こすため、現在 Android ログに表示されているクラッシュ ダンプ (ネイティブと Java の両方) が必要です (Android 以外の状況では stderr になると思います)。C コードと Java コードの両方を任意に変更することは自由ですが、コールバック (JNI に出入りする両方) の数は約 40 であり、明らかに、小さな差分にはボーナス ポイントがあります。

J2SE のシグナル チェーン ライブラリである libjsig.so について聞いたことがあります。そのようなシグナル ハンドラを Android に安全にインストールできれば、質問のキャッチ部分は解決しますが、Android/Dalvik 用のライブラリはありません。 .

0 投票する
3 に答える
1934 参照

perl - Solaris 9 でスリープ中の SIGALRM

Solaris 9 (Sparc) の chroot 環境で Perl を実行しているときに、ちょっと変わったエラーが発生します。カスタム Perl を使用していますが、ほぼ正確に P​​erl 5.8.7 です。このバージョンは、Solaris 8 ~ 10 を含むさまざまなプラットフォームで何年も実行されています

次のコードは非常に簡単です。

しかし、それを実行すると、「起きたばかりだ!」印刷されることはありません-代わりに、プログラムが終了し、「目覚まし時計」が画面にエコーされます。これは、スリープ状態の場合にのみ発生します。大量の計算を行い、実行に 10 秒かかるプログラムを作成すると、すべて正常に動作します。また、chroot 環境でのみ発生します。

「ALRM => undef」のエントリを持つ %SIG をダンプしましたが、これは予期されることです。chroot されていない環境でも同じ動作をします。ただし、スクリプトを変更して次を含めると:

...すべて正常に動作します。それで、取引は何ですか?私は Solaris の経験があまりありませんが、デフォルトのシグナルハンドラを適切に動作させる方法が必要です。

0 投票する
4 に答える
5991 参照

django - Django シグナルを一覧表示する方法はありますか?

Django でどのシグナルが設定されているかを確認する方法はありますか?

0 投票する
3 に答える
285 参照

c - 謎の SIGINT を受け取るアプリケーション

いくつかのさまざまな UNIX プラットフォーム (この問題は SunOS 5.10 で発生しています) 用に C で書かれた小さなデーモン アプリケーションがあります。これは基本的に、シリアル ポートを開き、そのポートを介して入ってくる情報をリッスンするだけです。

この特定の例では、デーモンは、シリアル ポート経由で送信された単一の送信 (ファイルの価値のあるデータなど) を読み取ったように見え、SIGINT を受信します。これは毎回起こります。他の顧客は、SIGINT を受信せずにこのセットアップを非常によく似た方法で使用します。明らかに、ユーザーは Ctrl-C を押していません。比較的単純なシグナル ハンドラーが用意されているので、それが起こっていることは確実にわかります。

他に何がこれを引き起こしている可能性がありますか? ここの質問をグーグルで調べてみると、SIGINTを引き起こす可能性のある他のことについての説明があまり見つかりませんでした。また、コードを調べたところ、raise() への呼び出しはなく、とにかく SIGINT を送信しない kill(pid, 0) への単一の呼び出ししか見つかりませんでした。

どんな考えや洞察も間違いなく高く評価されます。

0 投票する
12 に答える
515896 参照

python - PythonでSIGINTをキャプチャするにはどうすればよいですか?

私は、いくつかのプロセスとデータベース接続を開始する python スクリプトに取り組んでいます。Ctrlときどき+シグナルでスクリプトをC強制終了したいので、クリーンアップを行いたいと思います。

Perl では、次のようにします。

Python でこれに類似したものを作成するにはどうすればよいですか?

0 投票する
1 に答える
3470 参照

c++ - glibmmタイムアウト信号

私はgtkmmを使った小さなアプリケーション用のプラグインに取り組んでいます。私が取り組んでいるプラグインは、毎分後に特定の条件(日付が変更され、新しい日が開始された)をチェックし、条件が真の場合にいくつかのアクションを開始します。プラグインの初期化部分には、Glib::SignalTimeoutとsigc++を使用する次のコードがあります。

ここで、testCounterは初期化メソッドを含むクラスで定義された属性であり、CHECK_INTERVALは1分に等しい定数です。存在する他のすべての変数は、初期化コードとコールバックメソッドを含むクラスで定義されています。checkNewDayメソッドは、条件がテストされ、日が変更された場合にアクションが実行される場所です。

実際のアクションを使用する前に、上記の小さなテストコードを配置して、すべてがうまくいき、checkNewDayが1分に1回しか呼び出されないかどうかをテストしました。私が見つけたものは私を困惑させます。1分ごとに、stdoutに(少なくとも)10個のメッセージが出力されますが、変数は1分ごとに1回だけ増加します。

****** をちょきちょきと切る ****

毎分かそこらで新しい日をチェックしています

インクリメントする前

1分経過

毎分かそこらで新しい日をチェックしています

インクリメントする前

1分経過

**** をちょきちょきと切る ****

毎分かそこらで新しい日をチェックしています

インクリメントする前

2分経過

毎分かそこらで新しい日をチェックしています

インクリメントする前

2分経過

**** をちょきちょきと切る ******

テキストが10個(またはそれ以上)の異なるバッファに送信され、1分ごとに一度に印刷されたように動作します。誰かが私を啓発し、なぜこれが起こっているのかを理解するのを手伝ってくれるでしょうか。コールバックは1分に1回しか呼び出されないと確信しているからです。ありがとうございました!

0 投票する
3 に答える
2929 参照

python - MPI信号処理

を使用する場合、実行中のコードでmpirunシグナル(たとえば、によって生成されたSIGINT)をキャッチすることは可能ですか?^C

たとえば、並列化されたPythonコードを実行しています。except KeyboardInterrupt単独で実行している場合はこれらのエラーをキャッチできますが、実行している場合はキャッチpython blah.pyできませんmpirun -np 1 python blah.py

誰か提案がありますか?CまたはC++でコンパイルされたプログラムでシグナルをキャッチする方法を見つけることでさえ、役立つスタートになるでしょう。

生成されたPythonプロセスにシグナルを送信すると、それらはシグナルを適切に処理できます。ただし、親orterunプロセスに送信された信号(つまり、クラスターで壁時間を超過したり、端末でcontrol-Cを押したりした場合)は、すべてを即座に強制終了します。

0 投票する
1 に答える
206 参照

bluetooth - ファイルをプッシュするBTデバイスをプログラムで選択する方法は?

私は情報キオスクを設計しており、現在キオスクの前に立っている人の電話であると仮定して、最も近い BT 対応デバイスにファイルを自動的にプッシュできる BT アプリケーションが必要です。

RSSI (Received Singal Strength Indicator) をチェックする以外にこれを行う方法はありますか?

すべての Bluetooth スタックがこのプロパティへのアクセスをサポートしていますか?

どのデバイスにプッシュするかを決定する基準として、RSSI はどの程度正確ですか? キオスクから離れた場所にある他の電話は、キオスクの前に立っている人の電話からの信号よりも強い信号を発している可能性がありますか?