我有 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
。