【发布时间】:2022-01-11 02:55:42
【问题描述】:
我正在尝试执行从终端传递到 argv 的命令,这些命令由 : 分隔,更具体的是 cat nevermind : grep left : wc -c。
tabCommand 是一个包含每个命令的数组,所以cat nevermind,grep left,wc -c
使用 printf 我可以确认 tabCommand[i-1] 不等于 cat nevermind 但我得到的输出是 Error: No such file or directory
if (execl(tabCommande[i-1],tabCommande[i-1], (char *)NULL) == -1) {
error_and_exit();
}
如果有人能帮我找到问题,我将不胜感激。
【问题讨论】:
-
这似乎是一个 C 问题,而不是关于 Unix&Linux 的问题。我已投票支持将其移至 SO。
-
我是这个平台的新手怎么搬家呢?
-
execl的第一个参数是可执行文件的名称,而不是要解析的命令。你正试图执行一个名为“cat nevermind”的命令,而你真的想要execlcat第一个参数是“nevermind”。 -
如果我硬编码`execl("cat","nevermind", (char *)NULL)` 我仍然得到同样的错误你知道什么是正确的语法吗?或者使用 execlp
-
使用
cat的完整路径,您可以使用type -p cat找到它。