这个数字在strace的输出中意味着什么?

时间:2011-03-25 09:03:19

标签: strace

6331  execve("./a.out", ["./a.out"], [/* 22 vars */]) = 0
6331  brk(0)                            = 0x601000

6331在这里意味着什么?

1 个答案:

答案 0 :(得分:1)

示例中的6331是进程ID;当strace(1)使用-f-F标记产生其他程序的程序时,它会派上用场。有关快速示例,请尝试以下操作:

strace -o /tmp/out -fF /etc/init.d/cron status

(简介没有什么神奇之处,我只是认为它是你系统中的一个脚本。)

/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()的方式)。