6331 execve("./a.out", ["./a.out"], [/* 22 vars */]) = 0
6331 brk(0) = 0x601000
ここでどういう6331
意味ですか?
6331 execve("./a.out", ["./a.out"], [/* 22 vars */]) = 0
6331 brk(0) = 0x601000
ここでどういう6331
意味ですか?
あなたの6331
例では、プロセスIDです。またはstrace(1)
、他のプログラムを生成するプログラムにフラグを立てるときに便利です。簡単な例として、これを試してください。-f
-F
strace -o /tmp/out -fF /etc/init.d/cron status
(そのinitscriptには魔法のようなものは何もありません、私はそれがあなたのシステム上にあるスクリプトであると思っただけです。)
この/tmp/out
ファイルには、いくつかのプロセスからの出力が表示され、それぞれにpidのプレフィックスが付けられます。
22631 read(10, "#!/bin/sh -e\n# upstart-job\n#\n# S"..., 8192) = 1826
22631 pipe([3, 4]) = 0
22631 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fcb01efd9d0) = 22632
22631 close(4) = 0
22632 close(10 <unfinished ...>
22631 read(3, <unfinished ...>
22632 <... close resumed> ) = 0
22632 close(3) = 0
22632 dup2(4, 1) = 1
22632 close(4) = 0
22632 stat("/home/sarnold/bin/basename", 0x7fffb751ce30) = -1 ENOENT (No such file or directory)
呼び出しで新しいプロセスが作成されたことを確認できます(これは、新しいバージョンのカーネルでclone(2)
Linuxが実装した方法です)。fork()