C/C++ 判断路径为文件

/***************************************************
* 函数说明: 判断当前path参数是否为一个可读的文件
* 函数返回: 0 - 文件可读 1 - 权限拒绝 -1 -函数错误
*   参 数 : path 文件路径.
***************************************************/
int isReadFile(const char *path)
{
        struct stat info;
        int euid,egid;
        if ( 0!= stat(path,&info) )
        {
                return -1;
        }

        //if it is a file
        if( S_IFREG != (info.st_mode & S_IFMT ) )
        {
                return 1;
        }

        euid=geteuid();//returns the real user ID of the

current process
        egid=getegid();//returns the effective user ID of the

current process

        //if effective user is root
        if(euid==0)
        {
                if(info.st_mode & S_IRUSR || info.st_mode &

S_IRGRP ||info.st_mode & S_IROTH)
                {
                        return 0;
                }
                else
                {
                        return 1;
                }
        }

        //another user can read
        if( info.st_mode & S_IROTH )
                return 0;
        //group can read
        if((info.st_gid == egid) && ( info.st_mode & S_IRGRP)

)
                return 0;
        if((info.st_uid == euid) && (info.st_mode & S_IRUSR))
                return 0;
        return 1;
}

 

 

文件权限.

S_IRUSR 读权限,文件属主
S_IWUSR 写权限,文件属主
S_IXUSR 执行权限,文件属主
S_IRGRP 读权限,文件所属组
S_IWGRP 写权限,文件所属组
S_IXGRP 执行权限,文件所属组
S_IROTH 读权限,其他用户
S_IWORH 写权限,其他用户
S_IXORH 执行权限,其他用户

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Windows操作系统下,我们可以使用C/C++编程语言来捕获资源管理器文件的修改。首先,我们需要使用Windows API来访问资源管理器的相关功能。 首先,我们可以使用FindFirstChangeNotification函数来监视指定路径下的文件和子文件的修改。该函数需要传入要监视的路径和一个布尔值来指示是否监视子文件夹的修改。一旦文件文件夹的修改被监测到,该函数将返回一个句柄。 接下来,我们可以使用WaitForSingleObject函数等待资源管理器文件的修改通知。该函数需要传入之前获得的句柄和超时时间,以等待通知的到来。如果文件文件夹的修改被监测到,该函数将返回WAIT_OBJECT_0的值。 一旦我们获得了资源管理器文件的修改通知,我们可以通过遍历文件夹中的文件来确定哪些文件被修改了。可以使用FindFirstFile和FindNextFile函数来获取文件夹中的文件信息,并通过比较文件的修改时间等属性来判断是否被修改。 最后,我们可以进行一些处理操作,比如打印被修改的文件名、复制被修改的文件等。 需要注意的是,捕获资源管理器文件的修改是基于轮询机制的,即需要我们使用循环来不断检查是否有文件被修改。在需要停止监测时,我们可以使用FindCloseChangeNotification函数来关闭资源管理器文件的修改监测。 总之,通过使用C/C++编程语言和Windows API,我们可以实现对资源管理器文件的修改捕获功能,以便实时监测文件的修改情况并进行相应的处理操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值