Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用setfsuid()创建文件时出现分段错误?_C_File_Permissions_Segmentation Fault - Fatal编程技术网

C 使用setfsuid()创建文件时出现分段错误?

C 使用setfsuid()创建文件时出现分段错误?,c,file,permissions,segmentation-fault,C,File,Permissions,Segmentation Fault,我有一个创建文件的c代码 #include <stdio.h> int main(int argc, char *argv[]) { FILE *fp; fp=fopen("/home/sss/test3.file","w"); fprintf(fp, "hi hi hi\n" ); fclose(fp); return 0; } #包括 int main(int argc,char*argv[]) { 文件*fp; fp=fopen

我有一个创建文件的c代码

#include <stdio.h>
int main(int argc, char *argv[])
{
    FILE *fp;
    fp=fopen("/home/sss/test3.file","w");
    fprintf(fp, "hi hi hi\n" );
    fclose(fp);
    return 0;   
} 
#包括
int main(int argc,char*argv[])
{
文件*fp;
fp=fopen(“/home/sss/test3.file”,“w”);
fprintf(fp,“hi-hi\n”);
fclose(fp);
返回0;
} 
当我在file fopen()调用之前添加setfsuid()命令并执行该程序时,我得到了一个分段错误

#include <stdio.h>
#incldde <unistd.h>
int main(int argc, char *argv[])
{
    FILE *fp;
    setfsuid(1002);
    fp=fopen("/home/sss/test3.file","w");
    fprintf(fp, "hi hi hi\n" );
    fclose(fp);
    return 0;   
}
#包括
#包括
int main(int argc,char*argv[])
{
文件*fp;
setfsuid(1002);
fp=fopen(“/home/sss/test3.file”,“w”);
fprintf(fp,“hi-hi\n”);
fclose(fp);
返回0;
}

setfsuid()命令需要root权限,并且我在一个带有服务器操作系统的linux系统上。什么可能导致此问题?

您需要检查
fopen
的结果,并确保它不是
NULL
setfsuid
更改用于文件系统访问检查的
UID
。此更改后,您可能没有权限打开该文件进行写入,导致
fopen
返回NULL。当您尝试使用
fprintf
写入文件时,这会导致
segfault
在使用返回值之前,请始终检查它们。