linux中“cp”命令的流程图

时间:2010-09-24 07:19:02

标签: linux

我想知道cp命令是如何执行的,我的意思是它从最顶层到内核然后再返回?什么是它的流程,当我们写cp命令时发生了什么以及它是如何发生的?请详细说明。

@ all 我真的很想知道这一点,所以请尽快回复

提前感谢,

新手

3 个答案:

答案 0 :(得分:1)

我建议您在cp命令上执行strace,如:

$ strace cp foo bar

这样您就可以看到system calls命令生成的所有cp

答案 1 :(得分:1)

cp之前的

foo.c 内容:

this is foo

strace cp foo.c bar.c 给了我这个:

execve("/bin/cp", ["cp", "foo.c", "bar.c"], [/* 58 vars */]) = 0

//several calls to open, fstat64, mmap2, close

open("foo.c", O_RDONLY|O_LARGEFILE)     = 3
    fstat64(3, {st_mode=S_IFREG|0664, st_size=12, ...}) = 0

    open("bar.c", O_WRONLY|O_CREAT|O_EXCL|O_LARGEFILE, 0664) = 4
        fstat64(4, {st_mode=S_IFREG|0664, st_size=0, ...}) = 0
        read(3, "this is foo\n", 32768)         = 12
        write(4, "this is foo\n", 12)           = 12
        read(3, "", 32768)                      = 0
    close(4)                                = 0
close(3)                                = 0

close(0)                                = 0  // close stdin
close(1)                                = 0  // close stdout
close(2)                                = 0  // close stderr
exit_group(0)                           = ?

答案 2 :(得分:0)

你可以下载资源。如果你有一些debian:

#this will tell you what package cp comes from
dpkg -S "$(which cp)"
apt-get source the_package_name_here