2014-09-06 72 views
1

我已經做了一個c代碼,旨在在根目錄下創建一個文件。umask不能在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; 
} 

編譯沒有給出錯誤,但是當我執行文件,會出現以下錯誤:

[email protected]:~$ gcc -Wall a2.c -o a2 
[email protected]:~$ ./a2 
Segmentation fault (core dumped) 

我怎麼使用umask功能錯了嗎?

+0

你怎麼知道段錯誤是由'umask'造成的? – 2014-09-06 13:01:10

+0

使用gdb獲取回溯並將其添加到您的問題 – mpromonet 2014-09-06 13:05:16

+0

@YuHao呃,你的權利......我想這個錯誤基本上不是因爲'umask',但我假設問題最終與'umask'有關,因爲我打算'umask'給予適當的許可fopen和fclose – kwagjj 2014-09-06 13:08:02

回答

2

我的錢是在fopen()失敗(可能是由於權限不足)並返回NULLfclose(NULL)causing the segfault

+0

那我該如何獲得適當的許可?我使用'umask'來獲取權限,但它似乎不起作用 – kwagjj 2014-09-06 13:06:48

+1

@kwagjj'umask'不影響您的程序是否有權執行某些操作。它會影響程序創建文件時的默認權限位。 – Gilles 2014-09-06 13:19:54

+0

@NPE謝謝我明白你在說什麼......我已經開始嘗試另一種方式來完成工作了 – kwagjj 2014-09-06 13:57:04