%20%E4%B8%8D%E4%BC%9A%E6%89%A7%E8%A1%8C%E6%B2%A1%E6%9C%89%E7%BB%9D%E5%AF%B9%E8%B7%AF%E5%BE%84%E7%9A%84%E5%91%BD%E4%BB%A4.png)
我有 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
。