問題タブ [sigaction]
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.
c - C - パラメータなしでパラメータで宣言された関数を呼び出す?
次の行を持つコードを理解しようとしています:
私の質問は次のとおりです。
このような関数を呼び出す意味は何ですか?
NULL
パラメータとして入れるだけですか?無効なのでどうしよ
new_Sigiterm.sa_handler
うもNULL
ない?
ありがとう。
c - sigaction と Linux 環境での c によるシグナルの無視
このタイプのプログラミングは初めてなので、質問が些細なことでしたら申し訳ありません。私がやろうとしているのは、プログラムでセグメンテーション違反を引き起こし、プログラムを終了する代わりに、信号を処理してセグメンテーション違反後に実行を継続したいということです。動作しているように見えるコードを書きましたが、これがこれを行う方法であることを確認したいだけです。だからここに私のコードがあります。
myhandle 内の printf が 2 回実行される理由を説明してもらえますか? また、このコードは大丈夫ですか?
ありがとうございました。
c - sigaction のシグナル ハンドラが子プロセスで呼び出されない
のシグナルハンドラをインストールするプログラムがありますSIGSEGV
。シグナル ハンドラー (クラッシュをキャッチしようとする) で、アプリケーションを再起動します。
しかし、私のアプリケーションが復活すると、それはSIGSEGV
もう処理されません。
次に例を示します。
出力で得られるものは次のとおりです。
したがって、sighandler が正しい方法で設定されていることがわかりますが、復活したアプリは静かにクラッシュしました。
私は何が欠けていますか?
linux - sigtimedwait() の「set」パラメーターのシグナルが配信されない
私は最近、Linux でのシグナル処理に取り組んでおり、シグナル処理に関連するすべての概念を読みました。私の頭を悩ませている 1 つの質問は、プロセスのブロックが解除されている間、sigtimedwait() のセットのシグナルが配信されない理由です。私のコードは次のとおりです:-
質問をより明確にするために、上記のコードで「set」パラメーターとして「s1」を使用して sigtimedwait を呼び出しました。このセットには、シグナル SIGINT のみが含まれます。man ページによると、sigtimedwait() は、セット内のシグナルの 1 つが配信されるまでプロセスをブロックします。私はその声明で大丈夫です。しかし、プロセスのブロックを解除するために SIGINT を渡すと、SIGINT ハンドラが呼び出されないのはなぜですか? 一方、セットにない SIGALRM または SIGTSTP を渡すと、期待どおりに EINTR が返され、シグナル ハンドラも呼び出されます。
シナリオを観察したい人は、上記のコードを実行して SIGINT を渡すことができます。彼らは、ハンドラが呼び出されなくてもプロセスがブロックされていないことを確認します。ハンドラーが呼び出されないのはなぜですか? sigtimedwait()の man ページの一部を誤解していますか??
c - Cでシグナルを使用して、タイマーが終了したときにプログラムを停止して続行する方法
GPSモジュールからデータを取得して処理する、Raspberry-Pi(Linux)で実行されるプログラムを開発しています。
現在、プログラムは GPS データを取得して処理するループを中心にしていwhile(1)
ます (データは GPS モジュールの周波数でストリーミングされます)。
ただし、while(1)
電力効率の高いソリューションではないことはわかっています (この RPi は後でドローンに搭載される予定です)。
タイマーを設定したいのですが、タイマーが終了したときだけ、プログラムは GPS データを取得します。理想的には、タイマーが終了するまでプログラムを完全に停止して、CPU が時間やエネルギーを浪費しないようにします。
呼び出し
SIGSTOP
で信号が許可されていない場合、上記をどのように行うことができますか?sigaction()
c - 2回目のGETCHLDシグナルを取得できませんc linux eclipse
システムTWICE内の他のすべてのプロセスにシグナルSIGCHLDを送信するプログラムがあります。問題は、一度しか送信されないことです。
シグナルを送信するプログラム:
シグナルを取得するプログラム:
機能は次のとおりです。
最初の信号だけで、2番目の信号を取得しないのはなぜですか? ...ヘルプ??