access函数使用
- F_OK 值为0,判断文件是否存在
- R_OK 值为4,判断对文件是否有读权限
- W_OK 值为2,判断对文件是否有写权限
- X_OK 值为1,判断对文件是否有读写权限
对于后三种情况,可以用“或”的方法将多种情况合在一起测试,比如R_OK | W_OK就代表测试进程对文件的读写权限。
对于faccessat函数,其用fd来指定目录,mode的含义不变,而flag可以指定是判断有效用户的权限还是实际用户的权限。
如果flag的值是AF_EACCESS(值为0x200)的话,判断的是有效用户的权限;
如果flag的值是0的话,则跟access一样,判断的是实际用户的权限。
当判断有权限时,返回0,否则返回-1.
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h> void err_sys(char *);
void err_sys(char *err_txt)
{
printf("%s\n",err_txt);
exit();
} int main(int argc, char* argv[])
{
// access 以实际用户ID测试进程的访问权限
printf("euid = %d,egid = %d,uid = %d, gid = %d\n",geteuid(), getegid(), getuid(), getgid());
if (argc != )
err_sys("you should input: %s file_name\n",argv[]); //判断实际用户的权限
if(access(argv[], R_OK | W_OK) < )
printf("access error for RW!\n");
else
printf("access OK for RW!\n"); //以有效用户身份打开文件
if(open(argv[], O_RDWR) < )
printf("open error for RW");
else
printf("open ok for RW"); return ;
}
access函数使用的更多相关文章
- 文件和目录:access函数
access函数是按照实际用户ID和实际组ID进行访问权限测试的: #include <unistd.h> int access( const char *pathname, int mo ...
- 文件和目录之access函数
本篇博文内容摘自<UNIX环境高级编程>(第二版),仅作个人学习记录所用.关于本书可参考:http://www.apuebook.com/. 当用open函数打开一个文件时,内核以进程的有 ...
- linux C之access函数 (20
http://blog.sina.com.cn/s/blog_6a1837e90100uh5d.html linux C之access函数 (20access():判断是否具有存取文件的权限 相关函数 ...
- linux下access函数
Linux内核总是根据进程的有效用户ID和有效组ID来决定一个进程是否有权访问某个文件. 因此,在编写调整用户ID的程序时,在读写一个文件之前必须明确检查其用户是否原本就有对此文件的访问权限. 为了实 ...
- 程序4-2 access函数实例
//http://blog.chinaunix.net/uid-24549279-id-71355.html /* ========================================== ...
- 【转】C语言中access函数
头文件:unistd.h 功 能: 确定文件或文件夹的访问权限.即,检查某个文件的存取方式,比如说是只读方式.只写方式等.如果指定的存取方式有效,则函数返回0,否则函数返回-1. 用 法: int a ...
- c++ 在Ubuntu系统中使用access函数
include<iostream> #include<stdlib.h> #include<stdio.h> #include<unistd.h> us ...
- access函数
access函数是按照实际用户ID和实际组ID进行访问测试的.函数的定义如下: #include <unistd.h> int access(const char* pathname, i ...
- 【转载】 C中的access函数
分类: C/C++ int access(const char *filename, int amode); amode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在 ...
随机推荐
- Disconf实践指南:安装篇
Disconf是百度开源出来的一款基于Zookeeper的分布式配置管理软件.目前很多公司都在使用,包括滴滴.百度.网易.顺丰等公司.通过简单的界面操作就可以动态修改配置属性,还是很方便的.使用Dis ...
- 象棋AI算法(一)
最近想做一个象棋游戏,但是AI把我难住了.这是这几天的成果: 象棋程序通过使用“搜索”函数来寻找着法.搜索函数获得棋局信息,然后寻找对于程序一方来说最好的着法. 一,最小-最大搜索Minimax Se ...
- keil中结构体跨文件调用
在a.h中: 定义了, struct ABC{ short a; short b; ```}; 在a.c中(#include "a.h"): 声明了, struct ABC stc ...
- 03-24 Winform图表Chart
图表主要分为以下几个部分: 1.Annotations--图形注解集合, 2.ChartAreas--图表区域集合, 3.Legends--图例集合, 4.Series--图表序列集合(即图表数据对象 ...
- fileinput模块可以循环一个或多个文本文件的内容
fileinput模块可以循环一个或多个文本文件的内容. [默认格式] fileinput.input (files=None, inplace=False, backup='', bufsize=0 ...
- Spring与Redis的实现
前言 Redis作为缓存还是相当不错的,一定程度上缓解了数据库的IO操作,具体不多说,具体网上查找资料. 实战 不多说,直接上代码. 第一步:所需要的依赖 <!-- redis --> & ...
- git如何处理别人的pull request及解决冲突 (转)
原贴地址 出过两次了,每次都查很多资料,太蛋疼,记录在此. 当你的项目比较牛逼的时候,有人给你贡献代码,但他修改的地方恰恰你前阵子也修改了,这样在github中就不能够自动merge了. 因此你需要手 ...
- restful返回 json数据的JavaBean设计01
public class ResponseEntity implements Serializable { private int errCode; private String message; p ...
- 解决OpenFeign默认无法上传文件的问题
前言 最近在项目中使用OpenFeign时,发现其不支持文件上传功能.网上找了很多资料,最后找到feign-form和feign-form-spring的解决方案.但其默认只支持单文件上传,不支持多文 ...
- js引用类型赋值,深拷贝与浅拷贝
JS中引用类型使用等号“=” 赋值,相当于把原来对象的地址拷贝一份给新的对象,这样原来旧的对象与新的对象就指向同一个地址,改变其中一个对象就会影响另外那个对象,也就是所谓的浅拷贝.例如: var ar ...