gpt4 book ai didi

c - 在 C : check if file is executable 中实现 Unix shell

转载 作者:太空狗 更新时间:2023-10-29 15:10:12 25 4
gpt4 key购买 nike

我正致力于在 C 中实现一个 Unix shell,目前我正在处理相对路径的问题。尤其是在输入命令时。现在我每次都必须输入可执行文件的完整路径,而我更愿意简单地输入“ls”或“cat”。

我已经设法获得了 $PATH 环境变量。我的想法是在“:”字符处拆分变量,然后将每个新字符串附加到命令名称并检查文件是否存在以及是否可执行。

例如,如果我的路径是:“/bin:/usr/bin”,然后我输入“ls”,我希望程序首先检查“/bin/ls”是否存在并且是否可执行,如果不存在则转到“/usr/bin/”。

两个问题:

1) 这是一个好的方法吗? (不一定是最好的吧,我只是想确定它能行得通。

2) 更重要的是,如果文件存在且可执行,我如何在 C 中检查?

我希望我已经足够清楚了,而且...谢谢 :)

最佳答案

不要。执行此检查是错误的;它本质上受制于竞争条件。相反,尝试使用适当的 exec 系列调用来执行它。如果它不可执行,您将收到错误消息。

另请注意,您不需要自己搜索PATHexecvp 可以为您做这件事。

关于c - 在 C : check if file is executable 中实现 Unix shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4629643/

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