如何在Linux中使用c语言创建一个文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (594)

我打算在Linux(Ubuntu)上用C创建一个只写的文件。这是我的代码:

 int fd2 = open ("/tmp/test.svg", O_RDWR|O_CREAT);

 if (fd2 != -1) {
   //....
 }

但是为什么我创建的文件有“XR”权限呢?我如何创建它,以便在命令提示符下自己打开它?

------xr--  1 michael michael  55788 2010-03-06 21:57 test.txt*
------xr--  1 michael michael   9703 2010-03-06 22:41 test.svg*
提问于
用户回答回答于

第三个参数你可以授予访问权限:

int fd2 = open("/tmp/test.svg", O_RDWR|O_CREAT, 0777);  // Originally 777 (see comments)

if (fd2 != -1) {
    // use file descriptor
    close(fd2);
}

这样,所有的读,写和执行权限将被赋给用户和组。你可以根据你的使用修改第三个参数。

用户回答回答于

解决办法:

int fd2 = open("/tmp/test.svg", O_RDWR | O_CREAT, S_IRUSR | S_IRGRP | S_IROTH);

请注意,你可以创建一个没有写入权限的文件,同时你也可以从当前进程中写入文件。除非你正在编写一个编译器(“.svg”文件是不可执行的文件)。

你可以使用头来获得信息(但open()本身宣布<fcntl.h>)。如下

<sys/stat.h><fcntl.h>-

请注意,固定的文件名称和缺乏保护性,例如O_EXCL使修改后的open()调用有些不安全。

扫码关注云+社区

领取腾讯云代金券