execvp函数问题(在线等)
原程序:(不管输入什么,运行到execvp的时候都会报错,好像是输入到execvp函数中的参数有问题,但我不知道是哪出毛病了,还望各位指教)
int main()
{
int i = 0,j;
char buf[256];
char *argv[1024];
fgets(buf,256,stdin);
printf("%s\n",buf);
argv[0] = strtok(buf," ");
do
{
argv[++i] = strtok(NULL," ");
}while(NULL != argv[i]);
for(j = 0; j < i; j++)
{
printf("%s\n",argv[j]);
}
if(-1 == execvp(argv[0],argv))
perror("execvp");
return 0;
}
[解决办法]
- C/C++ code
#include <stdio.h>#include<unistd.h> #include <stdlib.h>#include <string.h>int main(){ int i = 0,j; char buf[256]; char *cmd; char *argv[1024]; fgets(buf,256,stdin); cmd = strtok(buf," "); argv[i++] = cmd; while ((argv[i] = strtok(NULL," ")) != NULL) { i++; } for(j = 0; j < i; j++) { printf("%s ",argv[j]); } argv[j-1][strlen(argv[j-1])-1] = 0; argv[j] = NULL; char * argv1[ ] ={"ls","-al","/etc/passwd",0}; if(-1 == execvp(cmd,argv)) { perror("execvp"); } return 0;}