gpt4 book ai didi

c - 我的 C 程序如何检查它是否对给定文件具有执行权限?

转载 作者:IT王子 更新时间:2023-10-29 00:53:40 25 4
gpt4 key购买 nike

有没有一种方法可以确定进程是否可以执行一个文件而不必实际执行它(例如,通过调用execv(filepath, args) 只会失败并且发现 errno == EACCES)?

我可以stat 文件并观察st_mode,但我仍然不知道这与过程有什么关系。

理想情况下,我正在寻找一个类似

的函数
get_me_permissions(filepath, &status); // me: the process calling this function
// when decoded, status tells if the process can read, write, and/or execute
// the file given by filepath.

提前致谢。

最佳答案

假设您的最终目标是最终执行该程序,您没有这样做。该测试将毫无用处,因为即使在进行检查的函数返回之前,结果也可能是错误的!您必须准备好处理由于权限错误导致的 execve 失败。

正如 Steve Jessop 所指出的,检查给定文件是否可执行可以在某些情况下很有用,例如文件列表 (ls -l) 或可视化文件管理器。人们当然可以想到更深奥的用途,例如使用文件的权限位进行进程间通信(作为一种不需要任何资源分配的方法很有趣),但我怀疑 stat(“What权限位设置为?”)而不是 access(“调用进程是否具有 X 权限?”)更可能是有趣的问题...

关于c - 我的 C 程序如何检查它是否对给定文件具有执行权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4985937/

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