bashプロセスは、基本的なシグナルハンドラ/トラップをどこで取得しますか?

bashプロセスは、基本的なシグナルハンドラ/トラップをどこで取得しますか?

~から https://stackoverflow.com/questions/50606753/do-getrlimit-and-setrlimit-work-by-reading-from-and-writing-to-etc-sec#comment88227414_50607042

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);

ベストアンサー1

おすすめ記事