第一个 0 表示这个数是 八进制
第二个 6 表示文件拥有者同组用户有读写权限,但没有执行权限
第三个 6 表示其它用户有读写权限,但没有执行权限
6 的 二进制就是 0110
第 1 位在权限中总是为 0
第 2 位为 0 表示文件不可以被读, 为 1 表示可以被读
第 3 位为 0 表示文件不可以被写, 为 1 表示可以被写
第 4 位为 0 表示文件不可以被执行, 为 1 表示可以被执行
删掉jj.c设置umask, open时指定权限:
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
int main(int argc,char* argv[]){
int r = open(argv[1],O_RDWR )
printf("open %s success!r = %d\n",argv[1],r)
char buf[1000000]={0}
int readlen = read(r,buf,sizeof(buf)-1)
umask(0)
int w = open(argv[2],O_RDWR | O_CREAT | O_TRUNC, S_IRWXO|S_IRWXG|S_IRWXU)
printf("create %s success!,r=%d\n",argv[2],r)
int writelen = write(w, buf,readlen)
close(r)
close(w)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)