如何使用C在Linux的`/ etc`文件夹中创建文件?

Rob*_*bb1 3 c linux permissions

我正在用C编写一个程序,每次开始设置一些变量时都必须检查一个配置文件.

在程序的第一次启动时,我想不会有任何配置文件,所以我需要创建它(使用默认设置).

我曾经说过程序的配置文件属于该文件夹/etc,更具体地说是为程序本身创建的特定文件夹(即/etc/myprog).这是我应该问的第一个问题:这是真的吗?为什么/etc

在任何情况下,我都尝试使用以下方法创建该文件:

open("/etc/myprog/myprog.conf", O_WRONLY | O_CREAT, 0644);
Run Code Online (Sandbox Code Playgroud)

open回报-1,并设置errno全局变量2(即文件夹不存在).如果我尝试直接创建文件/etc(因此"/etc/myprog.conf"作为第一个参数open),我得到一个errno设置为13(即权限被拒绝).

有没有办法授予我的程序写入权限/etc

编辑:我看到大多数用户建议使用sudo.如果可能的话,我宁愿避免使用此选项,因为此文件只需创建一次(在第一次启动时).也许我应该制作2个不同的可执行文件?(例如myprog_bootstrapmyprog,不必运行只有第一个与sudo)

小智 5

您需要root权限才能创建文件/etc.sudo在前面运行您的可执行文件:

sudo executable_name
Run Code Online (Sandbox Code Playgroud)