問題タブ [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.
windows - TerminateProcessとCtrl+C
SQLite3を使用してデータベースファイルを維持するコンソールモードプログラムがあります。実行にはしばらく時間がかかりますが、データベースへの書き込みが発生したと仮定すると、いつでもキャンセルしても安全です。(これはすべてWindowsの下にあります)
CtrlC実行中のプログラムの観点から、別のプログラムがTerminateProcessを呼び出すよりも、コンソールでヒットする方が安全ですか?
TerminateProcessが呼び出されると、データベースが破損する可能性があることに気付きました。これは、プログラムが書き込みを終了する機会がないためだと思います。私の推測ではCtrlC、OSがシグナルを強制終了するのではなく、プログラムがシグナルを取得してそれ自体を終了するため、それが優れていると思います。
プログラムは実際にはシグナルを処理しないことに注意してください(SQLiteが処理しない限り)。シグナルを処理するためのWin32実行可能ファイルの組み込みのデフォルトメカニズムについて話していますCtrlC。
質問を明確化/単純化するには-この書き込みが実行されたばかりであるとすると、次のようになります。
この書き込み中、TerminateProcessの動作は?とは異なりCtrlCますか?
python - Pythonスレッド+Unixシグナルのセマンティクスとは何ですか?
Pythonスレッドを取り巻くルールとUnixシグナルの処理方法は何ですか?
KeyboardInterrupt
PythonランタイムによってトリガーされますがSIGINT
、Pythonランタイムによって内部的に処理される、は別の方法で処理されますか?
linux - Linuxでのファイル記述子の数の増加
システムを監視し、定期的なログを印刷する長時間実行プロセスがあります。10〜15分以上実行すると、開いているファイルが多すぎますというメッセージが表示されて終了します。
プログラムは、2秒ごとにSIGUSR1を発生させるリアルタイムtimer_create()およびtimer_settime()を使用してセットアップされます。ハンドラーには、子に1つのfork()-exec()があります。親に待機があり、その後のmmap()と、/ proc / acpi / battery/stateおよび/sys/ devices / system / cpu/cpu0に対するストリーム操作があります。 / cpufreq/scaling_cur_freqおよびscaling_setspeedファイル。定期的なシグナルハンドラーと他のすべての場所でストリームFILE*ポインターを閉じるように注意しました。また、マップされたすべてのファイルのmunmap()を確認しました。
どうすればこれを回避できますか?許可される最大ファイル記述子を増やす必要がありますか、それともulimit -aSで示される最大オープンファイルを増やす必要がありますか?fclose()を使用してすべてのFILE *を閉じている場合、なぜこれが発生するのですか?
現在の私のシステムの値は次のとおりです。
perl - シグナルを無視することと、Perl で何もしないように指示することの違いは何ですか?
Perl に明示的にシグナルを無視するように指示した場合、SIGINT は効果がありません:
次に Control-C を押しても、明らかに効果はありません。一方、何もしないように指示した場合:
Control-C を押すと効果があります。sleep() 呼び出しからプログラムを起動し、すぐにカウントを増やします。信号を無視することと、何もしないように指示することの違いは何ですか?
私のプログラムでは、何も中断することなく、SIGINT でコードを実行したいと考えています。私は次のようなものが欲しい:
linux - SIGKILL アクセス許可ポリシーとは何ですか?
SIGKILL アクセス許可ポリシーとは何ですか?
非ルートで実行している間、カーネルや他のユーザーの何かを殺すことはできないと思いますが、これに関するドキュメントは見つかりませんでした。
c++ - 名前付きパイプに関して「ハンドシェイク」は一般的にどのように実装されていますか
名前付きパイプを使用して他のプロセスと通信する小さな Linux プログラムに、ハンドシェイク タイプのプロトコルを実装する必要があります。名前付きパイプを使用する場合のハンドシェイク型プロトコルの一般的な実装パターンを検索しましたが、何も上げることができませんでした...
これを行うパターンがないとは信じられません。誰かが可能なリソースを教えてくれますか?
完全な開示では、これは宿題ですが、このパターンを実装することは宿題ではありません。宿題コード内の問題を解決する必要があり、これが可能な解決策であると信じています。宿題は C++ で実装されていますが、言語は私には関係ありません。私は車輪を再発明したくないだけです....
更新:これは信号で実装される可能性があると感じています。
ハンドシェイクとは、子プロセスが親プロセスに、作業の準備ができていることを報告しますが、親が go シグナルを出すまで (パイプに何かがあったとしても) 先に進まないことです。私の作業理論では、多くの子プロセスが準備完了を報告し、親プロセスからの go シグナルを待つ必要があります。
c++ - I/O シグナルとハンドラ
新しいパケットが到着するたびにハンドラーが呼び出されるように、UDP ポートのコールバックを指定したいと考えています。
fcntl() を使用してファイル記述子が SIGIO を発生させることについては知っていますが、物事はそれほど単純ではないとしましょう。ソケット a を持つオブジェクト A とソケット b を持つオブジェクト B があります。ソケット a は新しいパケットを受信するため、SIGIO が発生します。ただし、これはオブジェクト A にのみ影響し、オブジェクト B とは関係ありません。
特定のポートがパケットを受信したときに特定の関数が呼び出されるようにするにはどうすればよいですか?
audio - FFTを私に説明してください
オーディオPCMデータを取得して、そのピークを見つけたいと思います。具体的には、ピークが発生する頻度と時間を返したいと思います。
これについての私の理解は、PCMデータを取得して配列にダンプし、複雑な部分を0に設定して実際の値として設定する必要があるということです。次にFFTを取得すると、配列が返されます。配列内の各数値が大きさの値である場合、各数値に関連付けられている頻度を取得するにはどうすればよいですか?また、実数部と複素数部の大きさを取得しますか、それとも複素数値を破棄しますか?
最後に、1つの曲のピークを見つけたい場合は、小さなウィンドウをFFTに設定して、すべてのオーディオにスライドさせますか?そのウィンドウの大きさに関する提案はありますか?
iphone - iPhoneのキャリア信号強度をプログラムで取得する
Objective-C を使用して、iPhone のキャリアや現在の信号強度を取得する方法はありますか? データ接続が存在するかどうか、およびその接続が Wi-Fi かセルラーかどうかを判断する方法を知っています。また、電話アプリに移動し、#3001*12345*# をダイヤルして [送信] をクリックすることで、iPhone を手動で「フィールド テスト」モードにできることも知っています。
algorithm - 時間依存 (1D) 信号を照合するアルゴリズム
誰かが時間依存信号を比較するために使用されるアルゴリズム/手法を教えてくれるかどうか疑問に思っていました. 理想的には、この仮想アルゴリズムは 2 つのシグナルを入力として受け取り、シグナル間の類似度を表す数値を返します (0 は 2 つのシグナルが統計的に無関係であり、1 はそれらが完全に一致していることを示します)。
もちろん、私の要求には問題があることを認識しています。つまり、これら 2 つのシグナルを比較するコンテキストで「類似性」を適切に定義する方法がわからないため、誰かが私を正しい方向に向けることができれば (調べる/知っておくべきことなど)、私もそれをいただければ幸いです。