当前位置:  开发笔记 > 运维 > 正文

在Ubuntu 16.04上没有"renameat2"系统调用函数

如何解决《在Ubuntu16.04上没有"renameat2"系统调用函数》经验,为你挑选了1个好方法。

人工页面renameat2()说我需要包括但这不起作用.

当我做的时候

cd /usr/include
grep -r renameat2

我看到__SYSCALL已定义但没有glibc函数.系统调用的标志可用,但不包括在内.



1> Lothar..:

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

注意:此系统调用没有glibc包装器; 见注意.

注释显示在其他页面上.所以我感到困惑.

通过阅读本文找到答案 https://lwn.net/Articles/655028/

这是代码

#include 
#include 

//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);

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有