Unix学习(六)

来源:互联网 发布:现货倚天屠龙指标源码 编辑:程序博客网 时间:2024/06/14 18:03

umask可以设置权限的屏蔽位,设置的位即使创建文件的时候提供也会被置0,从而修改默认的权限。
find ~ -name “c.*” > /dev/null 2> /dev/null
find ~ -name “c.*” > /dev/null 2>&1
find ~ -name “c.*” >& /dev/null
把标准输出和标准错误都重定向到null设备

fcntl(文件描述符,命令,struct flock*),功能很多但一般用来给文件加锁解锁
其中命令可以是F_SETLK(加锁), F_GETLKF(获得锁信息),F_SETLKW(加锁直到成功为止)
struct flock {

l_type:加锁的类型,(F_RDLCK读锁不互斥/F_WRLCK写锁与别的锁排斥独占的/F_UNLCK解锁),对文件的同一段多个读锁是可以共存的,但是多个写锁或着读锁写锁之间是冲突的,不能够共存,谁加锁由谁解)
l_whence/l_start:加解锁的位置,一个是参考点一个是偏移量,指明位置的开始处。
l_len:要加解锁的字节数
l_pid:哪个进程加的锁,F_GETLK命令才有意义,为了系统兼容性赋值为-1就行了

}

ioctl调用驱动程序接口,不同的驱动使用的参数及其含义各不相同。

系统:read/write二进制格式数据,
C语言:fread/fwrite,fgetc/fputc,fgets/fputs, fscanf/fprintf,….
C++:ifstream/ofstream

mmap:可以把一个文件映射到内存中,就可以像访问内存一样访问文件。
mmap(addr, len,prot, flag, fd, start),把fd中离文件头offset开始的地方的数据映射到内存addr开始len个字节的数据,返回实际映射成的地址,失败返回-1(MAP_FAILED)。addr一般不指定而是用NULL让系统自动选择合适的地址,len随意但是实际映射的内存会是一页(4K)的整数倍,fd一定要是可读的方式打开,start必须是一页的倍数。prot有几种可选,读写执行PROT_READ,PROT_WRITE,PROT_EXEC(但是一定要与fd的打开方式相容)。flag可以是MAP_ANONYMOUS不使用文件或者置0跟二选一组合MAP_SHARED(如果有多个程序映射了同一个文件可以实现内存共享,引文它们映射了同一个文件的同一个地方)/MAP_PRIVATE(私有:内存和文件内容不同步)。

进程:
getpid()
getppid()
getuid()
getgid()
gethostname(char数组, 数组大小)
ps -f -p pid 显示pid进程的完整信息 ps -e 显示所有进程(默认只显示本终端的进程)

初始化进程init的id为1,
在unix系统里有一个id为0的进程,是调度进程。Linux里是没有这个进程。

0 0
原创粉丝点击