Linux下的文件模式:
15~12 文件类型
11~9 权限修饰位
8~6 拥有者权限
5~3用户组权限
2~0其他用户权限
文件类型:
FIFO管道文件
SOCK套接字文件
管道文件:分为有名管道、无名管道
无名管道在需要时创建,在读端和写端都关闭时自动消失
有名管道是有文件名的,两个相互独立的进程可以使用这个文件名通过该管道进行通信。
测试文件类型:
文件权限修饰位:
setuid 与setgid 就是在该文件被执行的时候,进程的有效组ID,被设置为该文件的所有者,或者所有组。
这样的话,那么像类似passwd文件虽然其属性是不能被其他用户使用,修改密码的,但是通过/usr/bin/passwd,普通用户就可以通过passwd修改自己的密码。就是因为-r-s--x---x的存在,普通用户在执行的时候,普通用户就会变成该文件的拥有者,那么就可以执行passwd。
文件描述符:
任何打开的文件都将被分配一个唯一的标识该打开文件的文件描述符,为一个大于等于0的整数。
获取文件描述符: fileno();
Linux下的文件I/O管理:
创建/打开/关闭文件
打开文件的模式:
文件关闭:
close(fd);
实例:
文件 控制:
fcntl(int __fd, int __cmd, ...);
__cmd
给文件加锁:
用fcntl()检查文件的属性:
lockf文件控制,lockf()函数允许将文件区域用作信号量(监视锁),或用于控制对锁定进程的访问,试图访问已锁定资源的其他进程将返回错误或进入休眠状态,直到资源解除锁定为止。