日期:2014-05-16  浏览次数:20834 次

问下关于linux的创建文件和硬连接等。
求编写程序。
在修改进程掩码值前后分别创建一个文件,并建立硬连接和符号连接文件分别指向这两个文件。运行程序后,查看创建的这四个文件的实际权限及其它属性。


我不懂得如何编程,关键的语句不懂,求大哥大姐们给点指点。感激不尽。

------解决方案--------------------
首先说下原理:

linux文件存储中,文件名存放在目录节点下,而文件的权限等信息存放在inode下,并且inode中有一个链接数
当一个硬链接被建立时,并不会新增一个inode,而只是新建一个目录项,然后指向目标文件的inode,新建硬链接时目标文件的inode的链接数+1,删除硬链接时inode-1,直到inode为0才会删除实际文件

所以当创建一个硬链接的时候,并不会改变之前的文件权限

而软链接的创建应该是不受umask的影响的,你可以试着使用chmod修改一下软链接的权限,你会发现根本对软链接没有作用,其类型及权限标识仍然是 lrwxrwxrwx

这些操作都是可以直接使用命令验证的,至于编程,你的编程目的是什么,只是生成文件和链接,还是包括输出文件属性?
------解决方案--------------------
C语言调用Linux命令的例子:
http://bbs.csdn.net/topics/90378743
------解决方案--------------------
函数:
修改进程掩码值 umask()
创建符号链接 symlink()
硬链接 link()
具体的参见APUE第四章 《文件和目录》