【发布时间】:2019-05-10 06:00:42
【问题描述】:
我正在尝试使用 execv() 函数执行这个简单的命令ls -1 *.c。
#include<stdio.h>
#include<fcntl.h>
int main(int argc,char* argv[]){
char *arr[3]={"ls","-1","*.c"};
execv("/bin/ls",arr);
}
我得到的输出是
ls: cannot access *.c: No such file or directory
【问题讨论】:
-
char *arr[]={"ls","-1","*.c",NULL};指针数组需要一个NULL标记,这样才能确定它的长度。 -
像
*这样的通配符由shell 解释,而不是ls。 -
char *arr[]={"ls","-1","*.c",NULL};将给出相同的输出。 -
@user3133165 是的,但它不会因
EFAULT而崩溃或失败,甚至不会做更疯狂的事情。