gpt4 book ai didi

c - Ubuntu 16.04上没有 "renameat2"系统调用功能

转载 作者:IT王子 更新时间:2023-10-29 01:07:35 25 4
gpt4 key购买 nike

renameat2() 的手册页说我需要包括 <stdio.h>但这不起作用。

当我做一个

cd /usr/include
grep -r renameat2

我看到定义了 __SYSCALL 但没有 glibc 函数。系统调用的标志在 <linux/fs.h> 中可用。但这不包括在内。

最佳答案

好吧,我在这里找到了答案,glibc 没有添加系统调用和手册页缺少的一般问题

Note: There is no glibc wrapper for this system call; see NOTES.

请注意其他页面上显示的内容。所以我很困惑。

看完这篇文章找到了答案 https://lwn.net/Articles/655028/

这是代码

#include <sys/syscall.h>
#include <linux/fs.h>

//Open the old directories to obtain fds
int src_fd = open("old_dir", O_PATH);
int dest_fd = open("new_dir", O_PATH);
const char* src_path = "old_name.txt";
const char* dest_path = "new_name.txt";

unsigned int flags = RENAME_NOREPLACE;
int rc = syscall(SYS_renameat2, src_fd, src_path, dest_fd, dest_path, flags);

关于c - Ubuntu 16.04上没有 "renameat2"系统调用功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41655386/

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