なかだです。

At Tue, 4 Sep 2001 01:14:47 +0900,
Takahiro Kambe <taca / sky.yamashina.kyoto.jp> wrote:
> >  RedHat 7.1ではmanもないようですが、なぜかカーネルには書いてあ
> > るということは、もしかしたら追加される予定なんでしょうかねぇ。
> なんでpureにユーザランドだけの関数がカーネルに...?

 いやコメントだけですが。/proc/<pid>/cmdlineに対するread(2)の
実体のfs/proc/base.c:proc_pid_cmdline()を見ると、setproctitle()
で引数領域の最後のnulが上書きされていたら、後続の環境変数の領域
までコミで最初のnulまでを引数とみなすということになってるようで
す。これは2.4で追加されたようで、2.2のfs/proc/array.c:get_arg()
は単に引数領域全体をそのまま見せるようになってます。

 なんでそんなobsoleteなものをコメントの引合に出すんだか。

> 		int len = mm->arg_end - mm->arg_start;
> 		if (len > PAGE_SIZE)
> 			len = PAGE_SIZE;
> 		res = access_process_vm(task, mm->arg_start, buffer, len, 0);
> 		// If the nul at the end of args has been overwritten, then
> 		// assume application is using setproctitle(3).
> 		if ( res > 0 && buffer[res-1] != '\0' )
> 		{
> 			len = strnlen( buffer, res );
> 			if ( len < res )
> 			{
> 			    res = len;
> 			}
> 			else
> 			{
> 				len = mm->env_end - mm->env_start;
> 				if (len > PAGE_SIZE - res)
> 					len = PAGE_SIZE - res;
> 				res += access_process_vm(task, mm->env_start, buffer+res, len, 0);
> 				res = strnlen( buffer, res );
> 			}
> 		}

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦