user-0 提问: 进来接分

回复:
user: user-1
content: 哇 搭设在此！！围观学习中

user: user-2
content: 我是来节分的

user: user-0

user: user-3
content: 看了一下手册，你的参数值的确是取错了.函数原型int creat(const char *pathname, mode_t mode);mode的取值是               S_IRWXU， 00700 user (file owner) has  read,  write  and  execute permission                S_IRUSR  00400 user has read permission                S_IWUSR  00200 user has write permission                S_IXUSR  00100 user has execute permission                S_IRWXG  00070 group has read, write and execute permission                S_IRGRP  00040 group has read permission                S_IWGRP  00020 group has write permission                S_IXGRP  00010 group has execute permission                S_IRWXO  00007 others have read, write and execute permission                S_IROTH  00004 others have read permission                S_IWOTH  00002 others have write permission                S_IXOTH  00001 others have execute permission

user: user-0
content: 这个也没用。。。。。。

user: user-0

user: user-0
content: 用了root也是一样  umask(002)  ?

user: user-4
content: 引用 13 楼 q3733353520 的回复:[quote=引用 12 楼 fang098 的回复:] 在你的程序的原有基础上加上<io.h>和<errno.h>头文件，用上面那两个标志位试下。行不行试下就知道了。 没有io.h[/quote] 不行就用root用户登陆进去编译你的程序试下看看，刚试了下你程序没问题。

user: user-3
content: creat函数的第二个参数mode，实际上创建的文件的权限不是mode，而是umask函数的参数mode&(~cmode)的结果，所以在调用该函数时，最好先调用umask函数

user: user-0
content: 引用 14 楼 cyd54454 的回复:if( fd = creat("file.hole", O_WRONLY) == -1),话说这不是少了个括号么-。-，这fd要不是0要不就是1呀  确实是大意了，不过我时觉得file.hole的权限还是想不通

user: user-3
content: if( fd = creat("file.hole", O_WRONLY) == -1),话说这不是少了个括号么-。-，这fd要不是0要不就是1呀

user: user-0
content: 引用 12 楼 fang098 的回复:在你的程序的原有基础上加上<io.h>和<errno.h>头文件，用上面那两个标志位试下。行不行试下就知道了。 没有io.h

user: user-4
content: 在你的程序的原有基础上加上<io.h>和<errno.h>头文件，用上面那两个标志位试下。行不行试下就知道了。

user: user-0
content: 引用 9 楼 fang098 的回复:[quote=引用 楼主 q3733353520 的回复:]  #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> //#include <unistd.h>  char buf1[] = "abcdefghij"; char buf2[] = "ABCDEFGHIJ";  int main() { 	int fd;  	//if( fd = creat("file.hole", O_RDWR) == -1) 	if( fd = creat("file.hole", O_WRONLY) == -1) 		perror("creat fall\n"); #if 1	 	if(write(fd, buf1, 10) != 10) 		perror("buf1 write fall\n"); 	 	if(lseek(fd, 40, SEEK_SET) == -1) 		perror("\nlseek falli"); 	/*  offset now = 40 */  	if(write(fd, buf2, 10) != 10) 		perror("\nbuf2 write fall\n"); 	/*  offset now = 50 */ #endif 	putchar(10);  	return 0; }  很奇怪的现象，以RDWR打开文件权限为----------                              以WRONLY打开文件权限为---------x 你读写的标志是不是给错了，_S_IREAD | _S_IWRITE，用这两个试下。 你是以什么用户登陆进来的。[/quote]   请man  creat   那里来的这两个标志。。。

user: user-0
content: 代码贴在那里，你觉得标志错了吗？  我是以普通用户 但是又有什么关系呢   owner 都是这个用户

user: user-4
content: 引用 楼主 q3733353520 的回复: #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> //#include <unistd.h>  char buf1[] = "abcdefghij"; char buf2[] = "ABCDEFGHIJ";  int main() { 	int fd;  	//if( fd = creat("file.hole", O_RDWR) == -1) 	if( fd = creat("file.hole", O_WRONLY) == -1) 		perror("creat fall\n"); #if 1	 	if(write(fd, buf1, 10) != 10) 		perror("buf1 write fall\n"); 	 	if(lseek(fd, 40, SEEK_SET) == -1) 		perror("\nlseek falli"); 	/*  offset now = 40 */  	if(write(fd, buf2, 10) != 10) 		perror("\nbuf2 write fall\n"); 	/*  offset now = 50 */ #endif 	putchar(10);  	return 0; }  很奇怪的现象，以RDWR打开文件权限为----------                              以WRONLY打开文件权限为---------x 你读写的标志是不是给错了，_S_IREAD | _S_IWRITE，用这两个试下。 你是以什么用户登陆进来的。

user: user-0
content: 权限都没有  还谈什么方式open

user: user-0
content: 我是想问creat函数为什么会造成这种现象

user: user-5
content: 引用 4 楼 q3733353520 的回复:[quote=引用 3 楼 user-5 的回复:] 楼主想说什么  creat  创建的文件权限为什么是那样的[/quote]    你这是对文件进行操作么？ 首先要看文件是否存在   再决定以什么方式打开（open函数）  再进行文件的都写操作 至于你说的这中现象  没见过

user: user-0