このコメントは私を混乱させます:「kill-lは一般的にすべてのシグナルをリストします」。信号は量子化された量のエネルギーを意味すると思いました。
【追加】 Unixの(計算)信号と物理信号を明確にしてください。それらは完全に異なる概念ですか?
[追加]パラダイム間に大きな違いはありますか?C、Python、Haskellなどの言語でも意味は同じですか?信号は一般的な用語のようです。
このコメントは私を混乱させます:「kill-lは一般的にすべてのシグナルをリストします」。信号は量子化された量のエネルギーを意味すると思いました。
【追加】 Unixの(計算)信号と物理信号を明確にしてください。それらは完全に異なる概念ですか?
[追加]パラダイム間に大きな違いはありますか?C、Python、Haskellなどの言語でも意味は同じですか?信号は一般的な用語のようです。
マニュアルは、プロセスまたはオペレーティングシステムが信号を送信することによって他のプロセスに通知できるようにする非常に基本的なメカニズムを指します。SIGABRT
オペレーティングシステムはこれを使用して、プログラムの中止(シグナル)またはセグメンテーション違反(多くの場合、nullポインタへのアクセスによって引き起こされる)についてプログラムに通知し、SIGSEGV
そのうちの2つに名前を付けることができます。
一部のUNIXサーバーはシグナルを使用するため、管理者はkill
シグナルを送信して、再起動せずに構成ファイルを再読み取りできます。
一部のシグナルに対して実行されるデフォルトのアクションがあり、他のシグナルは無視されます。たとえば、を受信するSIGSEGV
と、プログラムは終了しますが、を受信するSIGCHLD
と、子プロセスが停止したことを意味し、デフォルトでは特別な結果は得られません。
シグナルハンドラーをインストールするANSIC標準関数があります。これは、シグナルを受信したときにコードを実行できる関数であり、signal
(read in man signal
)と呼ばれます。異なるUNIXでは、その関数の動作が異なるため、その使用はお勧めしません。そのマンページは、一貫性のある動作をし、さらに強力なsigaction
関数(read )を参照しています。man sigaction
人々がハードウェアとソフトウェアなどを比較したり、ある時点でOSに重点を置いたりしていないとは信じられません。
信号と割り込みの比較:
違いは、割り込みがハードウェアによってオペレーティング システムに送信されるのに対し、信号はオペレーティング システムまたは他のプロセスによってプロセスに送信されることです。シグナルは、ハードウェア(この場合は CPU 自体) から送信されるソフトウェア割り込みとは関係がないことに注意してください。(ソース)
定義
参考文献
信号を割り込みおよび例外と比較します
Tanenbaum の著書「Modern Operating Systems」
物理的なシグナルと Unix のシグナルはまったく異なる概念です。Unix シグナルがあるプロセスから別のプロセスに送信される場合、対応する特定の物理シグナルはありません。Unix シグナルは単なる抽象化であるため、プログラマーは相互に通信するプロセスについて話すことができます。
Unix シグナルは、メッセージ、イベント、通知、または「フロブ」などの造語と呼ばれることさえありました。デザイナーは「シグナル」という名前を選んだだけで、それは定着しました。
シグナルは、ターゲットプロセスまたはOSへのターゲットプロセスに関するメッセージです。これはunixAPIの一部です(さまざまなPOSIX標準で定義されています)。
man kill
、、、man signal
をお読みくださいman sigaction
。
役立つかもしれない他のSOの質問:
私のメモからのいくつか:
非同期通信が可能
シギント
シグペ
シグキル
SIGALRM
SIGTERM
SIGUSR1、SIGUSR2
別のプロセスにシグナルを送る
プログラマーは、信号を受信したときに何をするかを決定できます
中断された書き込みの検出
if (write(fd, buff, SIZE)<0) {
switch (errno) {
case EINTR:
warning(“Interrupted write\n”);
break;
}
}…
シグナルは、実行中のプロセスに送信できるメッセージです。
たとえば、インターネットデーモン(inetd)に構成ファイルを再読み取りするように指示するには、SIGHUP信号を送信する必要があります。
たとえば、inetdの現在のプロセスID(PID)が1234の場合、次のように入力します。kill -SIGHUP 1234
シグナルは、「計算プロセス間で送信されるイベント、メッセージ、またはデータ構造」です(ウィキペディアから)。
この場合、信号は「メッセージ」を意味します。つまり、プロセスにさまざまなことを実行するように指示できるメッセージをプロセスに送信します。
UNIX シグナルは、UNIX プロセスとの間で送受信できる一種のメッセージです。プロセスに終了するように指示する (SIGKILL)、プロセスに無効なメモリ参照がある (SIGSEGV)、またはユーザーが control-c を押すことによってプロセスが強制終了された (SIGINT) などのことを行うことができます。
*nix コマンド ラインから次のように入力します。
男信号
これにより、利用可能なすべての信号が表示されます。