文件的权限

rayfuture 2006-04-19 11:33:18
我是新手,初学UNIX和C语言,下边是我程序的一部分代码,可是为什么我建立了一个文件后,我不能用VI改写,我用VI打开只有读权限。
而且此程序也只能写文件一次。

if((filedes = open(argv[1], O_CREAT|O_RDWR|O_APPEND))<0)
err_ret("open error for %s", argv[1]);
else
printf("open for reading OK\n");

n = sizeof(buffer);
if(write(filedes, buffer, n) != n)
printf("write fail\n");
else
printf("write success\n");
close(filedes);
...全文
79 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
rayfuture 2006-04-19
  • 打赏
  • 举报
回复
按照一楼的说法试验了一次,还是不行。但是我看到那个新建的文件属性已经是:
-rwxr-xr-x。
比如我建立的文件是test。
那么我用vi打开,修改后用:w或者:x,提示:File exist - use "w!"to overwrite。
我不明白,为什么在这里必须要用强制写入才行,而我用:w!强制改写后,再次查看文件属性并没有变化啊。
lqh_wh 2006-04-19
  • 打赏
  • 举报
回复
估计你的shell中的umask设置的不对
你可以用下面的方法试试
if((filedes = open(argv[1], O_CREAT|O_RDWR|O_APPEND, S_IRWXU | S_IRWXG/*770*/))<0)

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧