c/c++语言开发共享使用C在Linux中创建文件

我试图在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* 

    指定O_CREAT时,需要使用open()的三参数forms。 当你省略第三个参数时, open()使用恰好在堆栈上的任何值,其中第三个参数是预期的; 这很少是一组连贯的权限(在您的示例中,似乎十进制12 =八进制014在堆栈上)。

    第三个参数是文件的权限 – 将由umask()值修改。

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

    请注意,您可以创建没有写入权限的文件(对任何其他人或任何其他进程),同时仍然可以从当前进程写入该文件。 很少需要对从程序创建的文件使用执行位 – 除非您正在编写编译器(并且’.svg’文件通常不是可执行文件!)。

    S_xxxx标志来自 – 您可以使用任一标头来获取信息(但是在声明了open()本身)。

    请注意,固定文件名和缺少保护选项(如O_EXCL甚至使修改后的open()调用有些不安全。

    授予访问权限作为第三个参数:

     int fd2 = open("/tmp/test.svg", O_RDWR|O_CREAT, 0777); // Originally 777 (see comments) if (fd2 != -1) { // use file descriptor close(fd2); } 

    通过这样做,所有读取,写入和执行权限都将提供给用户,组和其他人。 根据您的使用修改第3个参数。

    需要了解更多c/c++开发分享使用C在Linux中创建文件,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享使用C在Linux中创建文件相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/980451.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐