我正在使用C语言编写程序,每次启动时都需要检查一个配置文件来设置一些变量。由于程序第一次启动时,我假定没有任何配置文件,因此需要创建它(带有默认设置)。据说程序的配置文件属于/etc文件夹,更具体地说是专门为该程序创建的特定文件夹(即/etc/myprog)。这里出现了我本应该问的第一个问题:这是真的吗?为什么要用/etc?在任何情况下,我尝试使用以下命令来创建该文件:
有没有办法授予我的程序写入
open("/etc/myprog/myprog.conf", O_WRONLY | O_CREAT, 0644);
open
函数返回-1
并将全局变量errno
设置为2
(即文件夹不存在),如果我尝试直接在/etc
中创建文件(因此open
的第一个参数为"/etc/myprog.conf"
),则errno
被设置为13
(即权限被拒绝)。有没有办法授予我的程序写入
/etc
的权限?
编辑: 我看到大多数用户建议使用sudo
。 如果可能,我希望避免使用此选项,因为该文件只需在第一次启动时创建。也许我应该制作两个不同的可执行文件?(例如myprog_bootstrap
和myprog
,只需要使用sudo
运行第一个可执行文件)
/etc/
的权限,那么您的程序也不应该有(这将是一个巨大的安全漏洞...)。您需要使用sudo
运行(自从我开始输入这个问题以来已经提到了五次 :-) )。 - blackghost/etc
文件夹内为程序创建一个配置文件(正如有人建议我的那样,尽管我不太清楚为什么是/etc
!)此文件只需在程序第一次启动时创建,或在用户手动删除时创建...在所有其他情况下,我只需要读取它! - Robb1