【发布时间】:2015-01-04 22:12:25
【问题描述】:
我正在用 C 语言做一个项目,我被困在一件事上,我需要检查目录“/var/log/PROJECT”是否存在,如果不存在,我的程序必须创建它,应用程序将始终在超级用户上运行,这就是我正在做的事情:
struct stat st = {0};
if (stat("/var/log/project/PROJECT", &st) == -1) {
printf("im creating the folder\n");
mode_t process_mask = umask(0);
int result_code = mkdir("/var/log/project/PROJECT", 0777);
umask(process_mask);
}else{
printf("exist\n");
}
很抱歉要求“做我的作业”,但我真的卡住了......
【问题讨论】:
-
使用函数
system()执行系统命令! -
要运行超级用户,您只需以超级用户身份运行可执行文件,它将获得所有必需的权限!
-
/var/log/project/是否存在,rwx是 root 用户吗?如果您尝试创建的目录的父目录尚不存在,mkdir将失败。 -
mkdir -p /var/log/project/将完成这项工作,即使父母不在! -
我不认为在其中生成一个 shell 和另一个进程来创建一个目录是解决这个问题的明智之举。