我想编写一个执行 Linuxls
命令的程序。我真的只想输入ls
而不是/bin/ls
,所以我想使用execve
(execvp
不是一个选项) 来做到这一点。
我试过:
char *env[] = { "SHELL=/bin/bash",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games",
"_=/usr/bin/env",
(char *)0 };
execve(parmList[0], parmList, env);
但它似乎不起作用,ls
不被认可,但/bin/ls
它是。没有什么问题,parmList
因为我试过这个execvp
并且它有效。
有任何想法吗?