C语言中access/_access函数的使用

article/2025/10/7 17:15:12

在Linux下,access函数的声明在<unistd.h>文件中,声明如下:

int access(const char *pathname, int mode);

access函数用来判断指定的文件或目录是否存在(F_OK),已存在的文件或目录是否有可读(R_OK)、可写(W_OK)、可执行(X_OK)权限。F_OK、R_OK、W_OK、X_OK这四种方式通过access函数中的第二个参数mode指定。如果指定的方式有效,则此函数返回0,否则返回-1。

在Windows下没有access函数,但在<io.h>文件中有_access函数,声明如下:

int _access(const char* _Filename, int _AccessMode);

windows下的函数_access与linux下的access函数功能类似,用来判断指定的文件或目录是否仅存在(00),已存在的文件或目录是否有仅读(04)、仅写(02)、既可读又可写(06)权限。这四种方式通过_access函数中的第二个参数mode指定,如果mode传入的值不是0或2或4或6,调用此函数则会crash。如果指定的方式有效,则此函数返回0,否则返回-1。

以下是测试代码(access.cpp):

#include "access.hpp"
#include <iostream>
#include <vector>
#include <string>
#ifdef _MSC_VER
#include <io.h>
#else
#include <unistd.h>
#endifnamespace access_ {int test_access_1()
{
#ifdef _MSC_VERconst std::string path{ "E:/GitCode/Messy_Test/" };const std::vector<const std::string> names {"testdata", ".gitignore", "src", "invalid"};for (auto& name : names) {const std::string tmp = path + name;fprintf(stdout, "file or directory name: \"%s\": ", name.c_str());if (_access(tmp.c_str(), 0) == 0) fprintf(stdout, "exist, ");else fprintf(stdout, "not exist, ");if (_access(tmp.c_str(), 4) == 0) fprintf(stdout, "only has read premission, ");else fprintf(stdout, "does not have read premission, ");if (_access(tmp.c_str(), 2) == 0) fprintf(stdout, "only has  write premission, ");else fprintf(stdout, "does not have write premission, ");if (_access(tmp.c_str(), 6) == 0) fprintf(stdout, "has both read and write premission\n");else fprintf(stdout, "has neither read nor write premission\n");}
#elseconst std::vector<const char*> names {"testdata", "CMakeLists.txt", "build.sh", "invalid"};for (auto name : names) {fprintf(stdout, "file or directory name: \"%s\": ", name);if (access(name, F_OK) == 0) fprintf(stdout, "exist, ");else fprintf(stdout, "not exist, ", name);if (access(name, R_OK) == 0) fprintf(stdout, "has read premission, ");else fprintf(stdout, "does not have read premission, ");if (access(name, W_OK) == 0) fprintf(stdout, "has write premission, ");else fprintf(stdout, "does not have write premission, ");if (access(name, X_OK) == 0) fprintf(stdout, "has execute premission\n");else fprintf(stdout, "does not have execute premission\n");}
#endifreturn 0;
}} // namespace access_

在Linux下的执行结果如下:

GitHub:https://github.com//fengbingchun/Messy_Test


http://chatgpt.dhexx.cn/article/QjVBjBqf.shtml

相关文章

C语言:access函数的使用

C语言&#xff1a;access函数的使用 一、access()函数用来判断用户是否具有访问某个文件的权限(或判断某个文件是否存在). 二、需要包含#include<unistd.h> 三、参数和返回值 int access(const char *pathname,int mode) 参数: pathname:表示要测试的文件…

gremlin

g.V().hasLabel(Person).outE(Knows) inE()

复杂Gremlin查询的调试方法

复杂Gremlin查询的调试方法 摘要: Gremlin是图数据库查询使用最普遍的基础查询语言。Gremlin的图灵完备性&#xff0c;使其能够编写非常复杂的查询语句。对于复杂的问题&#xff0c;我们该如何编写一个复杂的查询&#xff1f;以及我们该如何理解已有的复杂查询&#xff1f;本文…

Gremlin基本使用

Gremlin简介 Gremlin是Apache TinkerPop 框架下的图遍历语言。Gremlin是一种函数式数据流语言&#xff0c;可以使得用户使用简洁的方式表述复杂的属性图&#xff08;property graph&#xff09;的遍历或查询。每个Gremlin遍历由一系列步骤&#xff08;可能存在嵌套&#xff09…

Gremlin语法学习笔记

hugegraph查询使用Gremlin语法&#xff0c;打开 hugegraph-studio http://10.0.0.50:18088&#xff0c;更详细的方法参考 http://kelvinlawrence.net/book/Gremlin-Graph-Guide.html#fuzzyregs 导入数据&#xff0c;jar包参考 https://git.gtapp.xyz/ml/graph-user&#xff0c…

从零开始Gremlin学习

从零开始Gremlin学习 创建schema和图 以下面这个ThinkerPop关系图为例 在建图之前&#xff0c;首先需要创建schema&#xff0c;创建的schema有属性、节点、和边缘&#xff0c;正常情况下是按照属性->节点->边缘&#xff0c;因为在定义及节点label的时候需要有属性&…

基于Gremlin语言图数据库查询的优化

图谱结构&#xff1a; 其中query标签的结构&#xff1a; 列名类型说明idinteger唯一主键classstring类别 a_[a|b|c|d|e|f]标签的结构 列名类型说明idinteger唯一主键classstring类别&#xff0c;关联到query的类别namestring名称 b_[a|b|c|d|e|f]标签的结构 列名类型说明id…

Gremlin学习笔记

前言 本文基于HugeGraph提供的HugeGraph-Studio编写示例代码&#xff0c;下图是示例关系图&#xff0c;示例数据在文末 基本概念 Gremlin是Apache TinkerPop框架下规范的图语言&#xff0c;相当于SQL之于关系型数据库 节点Vertex&#xff1a;一般指实体&#xff0c;如&#xf…

gremlin图查询插件

gremlin是一个通用的图查询插件&#xff0c;尽管在neo4j上可以使用Cypher语言进行查询&#xff0c;但我仍想调研一下通过gremlin查询neo4j。 1. 安装 插件下载地址&#xff1a;https://archive.apache.org/dist/tinkerpop/&#xff0c;这里下载了3.4.4版本的console和server压…

gremlin语法详解

初步认识 点&#xff1a;蓝色的圈代表顶点&#xff08;查询语句中的V()&#xff09;&#xff0c;圈中的person代表顶点的名称&#xff0c;name和age为顶点的属性。 边&#xff1a;黑色的线代表边(查询语句中的E())&#xff0c;线上的knows代表边的名称&#xff0c;weight为边…

gremlin语句详解

到了新公司用到了tinkerPop的gremlin语句&#xff0c;由于是全英文的文档。为了杜绝我鱼记忆&#xff0c;决定整理一下以后查看方便。嗯嗯~ o(*&#xffe3;▽&#xffe3;*)o 附图&#xff1a;语句来源于图片 初步认识&#xff1a; 点&#xff1a;蓝色的圈代表顶点&#xff…

图数据库入门教程-深入学习Gremlin(1):图基本概念与操作

前言&#xff1a;Gremlin语言是图数据库最主流的查询语言&#xff0c;是Apache TinkerPop框架下规范的图语言&#xff0c;相当于SQL之于关系型数据库。为了图数据库使用者更好的掌握Gremlin这门图语言&#xff0c;我们对Gremlin Steps进行了分类与总结&#xff0c;接下来将会出…

Gremlin:图遍历语言

Gremlin简介 Gremlin是Apache TinkerPop 框架下的图遍历语言。Gremlin是一种函数式数据流语言&#xff0c;可以使得用户使用简洁的方式表述复杂的属性图&#xff08;property graph&#xff09;的遍历或查询。每个Gremlin遍历由一系列步骤&#xff08;可能存在嵌套&#xff09;…

TWR双边测距

本篇承接UWB那篇&#xff0c;专门介绍下双边测距的原理。 1.单侧双边测距 如上图所示&#xff0c;设备A发起交换&#xff0c;设备B响应完成交换&#xff0c;每个设备精确地记录发送和接收时间戳信息。设备B在收到设备A的信号后&#xff0c;延迟固定的时间回发信号&#xff0…

Java 7 - TWR 和 多异常捕获 示例

为什么80%的码农都做不了架构师&#xff1f;>>> package interview.blob_clob;import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared…

TWR_MPC8309调试日志

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 TWR_MPC8309调试日志 --------By Moresung Chan , At 12:00 ,Sep 16,2012 一、软硬件&#xff1a; PC机操作系统&#xff1a;Microsoft Windows Server 2003 R2 开发板&#xff1a;TWR_MPC8309、…

DWM1000 测距原理简单分析 之 SS-TWR代码分析2 -- [蓝点无限]

蓝点DWM1000 模块已经打样测试完毕&#xff0c;有兴趣的可以申请购买了&#xff0c;更多信息参见 蓝点论坛 正文&#xff1a; 首先将SS 原理介绍中的图片拿过来&#xff0c;将图片印在脑海里。 对于DeviceA 和 DeviceB来说&#xff0c;初始化代码都一样&#xff0c;而后面部分…

Java 处理资源的try语句 (try-with-resources, TWR)

JAVA中try块的标准形式很通用&#xff0c;但有些常见的情况需要开发者小心编写catch和finally块。这些情况是清理或关闭不再需要使用的资源。 正常情况下&#xff0c;我们用try-catch-finally语句来实现打开文件资源&#xff0c;最后再关闭清理文件资源。例如下面的代码&#…

DWM1000 测距原理简单分析 之 SS-TWR

蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 正文: DWM1000 超宽带测距,使用的TOF(time of fly) 的方式,也就是计算无线电磁波传输时间,通过传输的时间换算成距离。 电磁波传输速率和光速一样,速度是299792.458km/s,可参见百度百…

完成“LPS node 与Crazyflie在TWR协议下的成功双向测距”实现心路历程总结

完成“LPS node 与Crazyflie在TWR协议下的成功双向测距”实现心路历程总结 1.初识TWR协议2. TWR进阶1.03.TWR协议进阶2.04.TWR协议进阶3.05.TWR协议进阶4.06.总结 说来惭愧&#xff0c;这一点点东西做了快3个月[手动狗头.jpg] 但是这个协议的深入学习让我真正认识到研究生该怎样…