■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50



レス数が1000を超えています。残念ながら全部は表示しません。

初心者もOK! FreeBSD質問スレッド その14

378 :名無しさん@お腹いっぱい。 :02/03/18 12:36
>>377
カーネルが最初の 2バイトを見て、#! かどうか調べる。

ライブラリで対応している処理系もあるけど、今はだいたい
カーネルのはず。


379 :378 :02/03/18 12:52
FreeBSD だと execve 内で
 static const struct execsw **execsw;
というのを参照している。
 http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/kern_exec.c?rev=1.155

で、kern/imgact_aout.c、kern/imgact_elf.c、kern/imgact_gzip.c、kern/imgact_shell.c
などというふうに、それぞれのバイナリ形式ごとに別れていると。

#! の解析と、argv の入れ換え部分はここね。
 http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/imgact_shell.c?rev=1.21.2.2

cd /usr/src/sys; grep #\! */* して追っかけていけば、なんとなく
わかった気になれるよ。そしてこの解説は、わかった気になっただけの
男が書いたものだから信用しちゃいけない。



掲示板に戻る 全部 前100 次100 最新50

read.cgi ver5.26+ (01/10/21-)