OS X は、Quit コマンドと Force Quit コマンドに対してどのような信号を送信しますか?

OS X は、Quit コマンドと Force Quit コマンドに対してどのような信号を送信しますか?

ユーザーがターゲット アプリケーションの外部 (アクティビティ モニターなど) からQuitまたはコマンドを実行すると、舞台裏では何が起こりますか?Force Quit

答え1

原則として、「終了」操作はない信号です。それはアップルイベントこれは、AppleScript スクリプトや、すでに実行中のアプリケーションでファイルや URL を開くために使用されるのと同じタイプのプロセス間通信であり、Unix ではなく Mac OS の系統に由来しています。

プロセスは、Apple イベントを受信するために明示的に登録する必要があり、そのようなプロセスは GUI プロセスであるか、少なくともデスクトップ セッションに関連付けられています (アクティビティ モニタ以外では、プロセスに終了を指示できる唯一の方法です)。

ただし、アクティビティモニタからプロセスを「終了」し、そのプロセスがないApple イベントを受信するように登録されている場合は、代わりに SIGTERM (15) を送信します。

答え2

dtrace を使用すると、プロセスに送信されるシグナルを確認できます。

sudo dtrace -n 'proc:::signal-send /pid/ { printf("%s -%d %d", execname, args[2], args[1]->pr_pid); }'

Dock に表示されているアプリケーションを強制終了する場合、シグナルは通常 -15 (TERM) です。ただし、アクティビティ モニタからバックグラウンド プロセスを強制終了する場合、シグナルは通常 -9 (KILL) です。

答え3

に送信された GUI アプリケーションの強制終了イベントを表示できますsystem.log。または、このスレッドに投稿されているように dtrace を使用します。dtrace を使用すると、より詳細な情報を取得できますが、ルート権限が必要です。

関連情報