【发布时间】:2012-07-30 13:34:50
【问题描述】:
我必须使用脚本找到一个名为 Test 的可执行文件,该可执行文件将路径作为参数,然后执行它。我正在用这条线做这个:
find -name Test -exec {} path \;
在 Test 我得到了一个 execl:
execl("./Test1","Test1",(char*)0);
perror("Exec failed");
exit(EXIT_FAILURE);
其中 Test1 与 Test 位于同一目录中。 “手动”执行 Test 一切正常,但使用上面写的行我有一个 Exec failed: No such file or directory 错误。
怎么了?
【问题讨论】:
-
只是好奇;为什么要执行路径?
-
首先,find真的找到文件了吗?
-
我是这些东西的新手,所以我可能已经做了几个平庸的错误,但是为了回答你:@rsplak:路径是 Test 的参数,正如我从手册页中读到的那样:所有以下要查找的参数都被视为命令的参数,直到参数包含 `;'遇到了。是不是错了?
-
如果你
echo它,你的命令是什么样子的?是否符合预期? (即,将 exec 更改为-exec echo {} path \;);这将打印命令而不是执行它,因此您可以验证它是您所期望的。 -
顺便说一句,这听起来很危险。难道您不应该在运行可执行文件之前知道它们的位置吗?这将运行在当前目录树下找到的 所有 个名为
Test的可执行文件。