Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
shally1995
V2EX  ›  Linux

求 Linux 下用 C 写出的文件拷贝

  •  
  •   shally1995 · Jul 3, 2015 · 4567 views
    This topic created in 4141 days ago, the information mentioned may be changed or developed.

    最近在写一个类似Linux下的cp命令,想完成文件复制,希望文件数据复制的同时,也希望其源文件的文件信息也复制到目标文件中(就是希望两个文件的stat相同),求怎么将源文件的相关文件信息(权限,修改时间之类的)也复制到目标文件中?麻烦大家帮帮忙····谢谢谢谢谢谢

    10 replies  •  2015-07-04 18:38:13 +08:00
    shally1995
    shally1995
    OP
    Jul 3, 2015
    1
    自己写的相关代码:
    struct stat buf1,buf2;
    stat(a,&buf1);
    stat(b,&buf2);
    buf2=buf1;
    a就是源文件的路径,b就是目标文件的路径,为什么文件信息就是复制不了呢
    mthli
    mthli
    Jul 3, 2015 via Android
    2
    我记得以前在某本书上看过,存储文件相关信息有专门的数据结构,可能你需要调用相应的函数读取一下。
    shally1995
    shally1995
    OP
    Jul 3, 2015
    3
    stat结构就是储存了文件的相关信息,感觉也不需要相关函数专门调用它,但是为什么就是复制不了呢
    @mthli
    lsylsy2
    lsylsy2
    Jul 3, 2015 via Android
    4
    stat语句的意思是将文件信息 [加粗] 复制 [/加粗] 到buf中,所以buf2=buf1这行语句对实际的文件没有任何效果。需要用另外的语句来设置文件属性。
    LZ可能需要学习一下传值和传引用的区别?
    Andiry
    Andiry
    Jul 4, 2015
    6
    用stat读出a的inode信息,然后用chmod,chown和utime设置b的信息
    msg7086
    msg7086
    Jul 4, 2015 via Android❤️1
    7
    我先把你的名字写在纸上,再把我的名字写在纸上,最后我把你的名字划掉改成我的,从此你就有了新的名字。
    alphonsez
    alphonsez
    Jul 4, 2015
    8
    你那个写法一看就不对,这个你只有多写多体会了。

    至于怎么写入文件信息,这个不是一个单一函数了,参考这个: http://www.gnu.org/software/libc/manual/html_node/File-Attributes.html

    用chmod来copy权限,用utime来修改文件时间。如果是windows系统那另说。
    Tiande
    Tiande
    Jul 4, 2015
    9
    @msg7086 6666
    panzhc
    panzhc
    Jul 4, 2015
    10
    rsync和tar可以不?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1780 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 23:58 · PVG 07:58 · LAX 15:58 · JFK 18:58
    ♥ Do have faith in what you're doing.