【问题标题】:umask not working in c codeumask 在 c 代码中不起作用
【发布时间】: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”执行的吗?

标签: c umask


【解决方案1】:

我的钱在fopen() 失败(可能是由于权限不足)并返回NULLfclose(NULL) causing the segfault

【讨论】:

  • 那我怎样才能获得适当的许可呢?我使用umask 获得了许可,但它似乎不起作用
  • @kwagjj umask 不会影响你的程序是否有权限做某事。当您的程序创建文件时,它会影响默认权限位。
  • @NPE 谢谢我明白你想说什么......我已经继续前进,正在尝试另一种方式来完成工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多