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
or-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)
(这是 Linuxfork()
在较新版本的内核中实现的方式)。