【发布时间】:2014-09-06 12:58:10
【问题描述】:
我已经编写了一个 c 代码,旨在在根目录中创建一个文件。
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
const char *path="/";
int main(){
FILE *fp;
umask(0);
chdir(path);
fp=fopen("test.txt","w+");
fclose(fp);
return 0;
}
编译没有错误,但是当我执行文件时,出现以下错误:
kwagjj@kwagjj-Inspiron-3420:~$ gcc -Wall a2.c -o a2
kwagjj@kwagjj-Inspiron-3420:~$ ./a2
Segmentation fault (core dumped)
我怎么使用umask函数错了?
【问题讨论】:
-
你怎么知道分段错误是由
umask引起的? -
使用 gdb 获取回溯并将其添加到您的问题中
-
@YuHao 呃,你的权利......我猜这个错误基本上不是因为
umask,但我假设问题最终与umask有关,因为我打算umask给予 fopen 和 fclose 适当的权限 -
你应该检查
fopen是否返回NULL。 -
您/您的程序(可能)没有在“/”(根)目录中创建文件的权限。那么,“/”的权限是什么,您的程序是通过“sudo”执行的吗?