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

2015-07-03 23:14:25 +08:00
 shally1995

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

3393 次点击
所在节点    Linux
10 条回复
shally1995
2015-07-03 23:19:19 +08:00
自己写的相关代码:
struct stat buf1,buf2;
stat(a,&buf1);
stat(b,&buf2);
buf2=buf1;
a就是源文件的路径,b就是目标文件的路径,为什么文件信息就是复制不了呢
mthli
2015-07-03 23:24:15 +08:00
我记得以前在某本书上看过,存储文件相关信息有专门的数据结构,可能你需要调用相应的函数读取一下。
shally1995
2015-07-03 23:43:57 +08:00
stat结构就是储存了文件的相关信息,感觉也不需要相关函数专门调用它,但是为什么就是复制不了呢
@mthli
lsylsy2
2015-07-03 23:44:35 +08:00
stat语句的意思是将文件信息 [加粗] 复制 [/加粗] 到buf中,所以buf2=buf1这行语句对实际的文件没有任何效果。需要用另外的语句来设置文件属性。
LZ可能需要学习一下传值和传引用的区别?
malash
2015-07-03 23:57:48 +08:00
Andiry
2015-07-04 01:53:57 +08:00
用stat读出a的inode信息,然后用chmod,chown和utime设置b的信息
msg7086
2015-07-04 05:43:45 +08:00
我先把你的名字写在纸上,再把我的名字写在纸上,最后我把你的名字划掉改成我的,从此你就有了新的名字。
alphonsez
2015-07-04 08:35:52 +08:00
你那个写法一看就不对,这个你只有多写多体会了。

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

用chmod来copy权限,用utime来修改文件时间。如果是windows系统那另说。
Tiande
2015-07-04 11:02:52 +08:00
@msg7086 6666
panzhc
2015-07-04 18:38:13 +08:00
rsync和tar可以不?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/203196

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX