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

2024-02-14

有没有办法判断进程是否may执行文件而不必实际执行它(例如通过调用execv(filepath, args)只是失败并发现errno == EACCES)?

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 是否可以静默运行 .NET Core 控制台应用程序(隐藏控制台窗口)?

    我正在尝试为自己自动化一些任务 并且编写了一些 NET Core 1 0 控制台应用程序 其中之一是 BrowserRouter 一个简单的应用程序 它基于 URL 模式 决定当我单击 HTTP S 链接时要打开哪个浏览器 浏览器配置文件
  • 访问 Linux 线程(pthreads)的本地堆栈

    我目前正在实现一个使用多线程但对总内存消耗有要求的应用程序 我希望有一个主线程执行 I O 并有几个工作线程执行计算 目前 我在主堆栈上有几个可供工作人员访问的数据结构 我使用 OpenMP 进行工作分配 由于主 工作者模式不能很好地与 O
  • 需要帮助找出为什么 for 循环的计数器变量被循环内的函数更改

    我的循环内的函数以某种方式改变了我正在迭代的值 但我不确定如何改变 如果描述得很糟糕 我很抱歉 在这个 for 循环内 int k for k 0 k lt 512 k Discardheader d doesnt actually do
  • C++ 致命错误 LNK1120:1 个未解析的外部

    是什么导致了这个错误 我用谷歌搜索了它 我发现的前几个解决方案是库和主函数出了问题 但在我的问题中似乎都很好 我什至重新输入了两者 可能是什么原因造成的 这可能会有所帮助 MSVCRTD lib crtexew obj 错误 LNK2019
  • TransactionScope 超时过早发生?

    我在用着TransactionScope进行一些批量插入和更新 问题是 即使我设置了超时 我也会在 30 分钟长的操作中遇到超时异常TransactionScope到一小时 此外 在异常之后 它会插入看似随机数量的批次记录 例如 最后一个操
  • 将Excel数据转换为特定的JSON格式

    我收到一个 Excel 文件 xlsx 如下所示 行和列的数量可以变化 例如 它也可以如下所示 对于第一张图片中的 Excel 工作表 JSON 应如下所示 value Prename Nik Age 17 Country Switzerl
  • asp.net mvc 3 中模糊的远程属性验证

    asp net mvc 3 中的内置远程属性会执行 onchange 验证 我希望它在模糊时验证 有没有办法自定义它 或者还有其他东西可以这样做 我确信这是一个非常普遍的需求 你可以设置默认值 http docs jquery com Pl
  • 无法从 ASP.NET 调用 DLL

    您好 我有一个 C Dll 它将与 cobol 应用程序交互 我们想通过互联网将数据发送到cobol 所以我创建了一个 C DLL 它将调用 C DLL 当我执行控制台应用程序时 它工作正常 但是当我尝试从 ASP NET 调用相同的 DL
  • 对 Dictionary 的键使用锁定

    我有一个Dictionary
  • 使用 TextBox 过滤 Datagridview 行

    我有一个绑定的 datagridView 我想使用 TextBox 值对其进行过滤 我使用了这段代码 private void ChercheStextBox TextChanged object sender EventArgs e tr
  • 如何将Windows服务中的参数从Installer传递到Program.cs中的Main函数?

    我已成功将参数从 Installutil 传递到我的 serviceinstaller 但我似乎无法将这些参数传递到 Main string args 函数 这就是我尝试做到这一点的方法 如果有更好的方法来做我正在做的事情请告诉我 prot
  • C++ 如何将对象向量声明为类的成员

    我正在尝试声明一个vector
  • 如何使用 C# 从 Kafka 获取主题列表

    我想从卡夫卡获取主题列表 我正在使用 kafka net 客户端 但无法在有关获取主题列表的文档中找到 您可以使用 Confluence Kafka 包中提供的 AdminClient 列出所有主题 using Confluent Kafk
  • Windows.Automation 中的旧版 IAccessible

    如何使用C 获取AutomationElement的LegacyIAccessible State和其他LegacyIAccessibles 就像工具中的 Inspect exe 一样 The LegacyIAccessible是新的 并且
  • C 在函数中返回数组

    我对 C 比较陌生 我习惯用 Java 编程 所以我发现 C 在涉及数组的方面有点困难 我仍然对这些案例感到困惑 int a int a int a 在java中 我会做这样的事情来在函数中返回一个数组 int returnArr int
  • mongodb c# 选择特定字段

    需要一些帮助来创建generic按名称选择字段的方法 像这样的东西 T GetDocField
  • 如何将十进制整数转换为十六进制整数? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions cout lt
  • 如何将向量转换为数组

    我如何转换std vector
  • 在 Ubuntu 上用 C 项目编译和链接 GTK 3

    我相信这不是重复的问题 在发布此问题之前我已经看过所有问题 答案 我想我这里的情况有所不同 我使用Ubuntu 12 04并下载GTK 2 和 3 我从 GNOME 网站复制了一个简单的 GTK 源代码 但是当我在终端中使用这个命令时 gc
  • 向 Windows 服务发送 Windows 消息

    有没有任何工具可以将 WM ENDSESSION 等 Windows 消息发送 模仿 到 Windows 服务 OR 如何使用 C 向进程发送 Windows 消息 我只懂C 编辑 目的 基本上我必须调试 Windows 服务来修复仅在系统

随机推荐