BashにはSIGQUIT用の特別なハンドラはなく、コアダンプ生成プロセスには参加しません。カーネルは、コアダンプのrlimitが十分に大きい場合にのみ、SIGQUITの「基本操作」の一部としてコアダンプを作成します。 rlimit は、Limit.conf の内容に基づいてログインして設定できます。 ulimitなどを使用して手動で調整されます。
私は「Bashには特別なSIGQUITハンドラはありません」ということをよく理解していません。
すべてのプロセスにはシグナルハンドラがあり、そのうちのいくつかはデフォルト値であり、通常、プロセスは基本シグナルハンドラを取得し、ここfork()
で親プロセスのシグナルハンドラをコピーし、シグナルハンドラexecve()
を変更しません。これは正しいですか?
bashプロセスは、基本的なシグナルハンドラ/トラップをどこで取得しますか?
APUEは、基本的なシグナルハンドラ(およびリンクエントリの中心であるリソース制限)を設定し、次を通過する最初のプログラムである場合login
(または開始シーケンスの他のプログラム)を見つけることができません。ログインシェルまで:getty
/etc/security/limits.conf
正しくログインするとログインになります。
•ホームディレクトリ(chdir)に変更します。
•エンドデバイスの所有権を所有するように変更します。
•エンドデバイスへのアクセス権を変更して、読み書きできる権限を持つようにします。
•setgidとinitgroupsを呼び出してグループIDを設定します。
•ホームディレクトリ(HOME)、シェル(SHELL)、ユーザー名(USERおよびLOGNAME)、デフォルトパス(PATH)など、ログインに含まれるすべての情報で環境を初期化します。
•ユーザーID(setuid)に変更し、以下のようにログインシェルを呼び出します。
execl("/bin/sh", "-sh", (char *)0);