gpt4 book ai didi

c - 获取 GCC 错误 : "sys/memfd.h: No such file or directory"

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:51 37 4
gpt4 key购买 nike

我正在尝试在我的 C 代码中使用 memfd_create 系统调用。我试图包含 sys/memfd.h 作为 memfd_create 的手册页说是合适的,但 GCC 给我一个错误“sys/memfd:没有这样的文件或目录” .

我试过谷歌搜索,但找不到遇到同样问题的人。我注意到 memfd_create 联机帮助页的某些版本说我应该包括 sys/mman.h,但当我尝试时它似乎没有帮助。它会说 memfd_create 是隐式声明的。

这是我的问题的最小重现。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>

#include <sys/mman.h>

#include <sys/memfd.h>



int main(){

int fd;
fd = memfd_create("test", MFD_CLOEXEC);

return 0;
}

我希望上面的代码能够正确编译和运行。

最佳答案

在旧系统上,您必须为 MFD_ 定义包含 linux/memfd.h,并通过调用 memfd_create() syscall(2) 包装器(包括 unistd.hsys/syscall.h 以使其工作)。

#define _GNU_SOURCE
#include <unistd.h>
#include <sys/syscall.h>
#include <linux/memfd.h>
#include <err.h>
int main(void){
int fd;
if((fd = syscall(SYS_memfd_create, "test", MFD_CLOEXEC)) == -1)
err(1, "memfd_create");
return 0;
}

关于c - 获取 GCC 错误 : "sys/memfd.h: No such file or directory",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56615488/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com