execl() 不会执行没有绝对路径的命令

execl() 不会执行没有绝对路径的命令

我有 C 程序保存在/usr/sbin/.该程序每两秒打印一次“Hello World”。我可以从任何文件夹调用/执行该程序。

当我用它编写C程序时system("a.out");,它会从任何文件夹执行,但是当我使用时,execl()我需要给出绝对路径,execl("/usr/sbin/a.out", "a.out");否则它不会执行。为什么?

答案1

system()C 库函数用于执行sh给定的命令。这样做时,它会在目录中搜索可执行文件,除非$PATH已经使用绝对路径指定了程序。 C 库函数execl()不执行此类查找。

您是否想使用该exec函数系列来执行您的程序,然后使用execlp()which 进行PATH查找。

在您的系统上查看man execlp

相关内容