免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2648 | 回复: 0
打印 上一主题 下一主题

UNIX下ln和cp的一些问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-15 22:12 |只看该作者 |倒序浏览
今天在看UNIX环境高级编程的第四章,章节的后面有道习题内容如下:

            编写一个类似cp(1)的程序,它复制包含空洞的文件,但不将字节0写到输出文件中去。

看到这个题的时候我首先就想到这章看到的open,dup,dup2,link,symlink几个函数,dup,dup2是创建新的文件描述符,但是和复制对象共用文件表项,我的理解就是进程两个文件数据共享,退出后就释放了,所以没有cp的功能,open按路径打开文件,不能同时创建文件和打开一个已经打开的文件。就只剩下link,symiink,其中link是创建硬连接,symlink是创建符号连接。我用以下指令测试这两个函数:

kastelo@debian:~/src/code$ ls -l temp.foo
-rw-rw-rw- 1 root root 2198  4月 15 22:02 temp.foo
kastelo@debian:~/src/code$ ln -d /home/kastelo/savetemp.foo temp.foo
ln: 正在访问"/home/kastelo/savetemp.foo": 没有那个文件或目录
kastelo@debian:~/src/code$ ln -d temp.foo /home/kastelo/savetemp.foo
kastelo@debian:~/src/code$ cd ~
kastelo@debian:~$ ls -l savetemp.foo
-rw-rw-rw- 2 root root 2198  4月 15 22:02 savetemp.foo
kastelo@debian:~$ ls -s src/code/temp.foo ltemp.foo
ls: 无法访问ltemp.foo: 没有那个文件或目录
4 src/code/temp.foo
kastelo@debian:~$ ln -s src/code/temp.foo ltemp.foo
kastelo@debian:~$ ls -l *temp*
lrwxrwxrwx 1 kastelo kastelo   17  4月 15 22:04 ltemp.foo -> src/code/temp.foo
-rw-rw-rw- 2 root    root    2198  4月 15 22:02 savetemp.foo
kastelo@debian:~$ rm src/code/temp.foo
kastelo@debian:~$ ls -l *temp*
lrwxrwxrwx 1 kastelo kastelo   17  4月 15 22:04 ltemp.foo -> src/code/temp.foo
-rw-rw-rw- 1 root    root    2198  4月 15 22:02 savetemp.foo
kastelo@debian:~$ gedit ltemp.foo
kastelo@debian:~$ gedit savetemp.foo
kastelo@debian:~$ cp savetemp.foo src/code/temp.foo
kastelo@debian:~$ ls -l *temp*
lrwxrwxrwx 1 kastelo kastelo   17  4月 15 22:04 ltemp.foo -> src/code/temp.foo
-rw-rw-rw- 1 root    root    2198  4月 15 22:02 savetemp.foo

可以看出用硬连接创建的savetemp.foo功能和cp差不多,而符号连接symlink相当于一个指针,删除temp.foo后就无效了。

所以我最后认为这个题的解就是用link函数创建一个对象文件的硬连接!想问哈大家这样做对吗?如果对那是不是说link和cp是一样的功能!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP