关于execvp函数的疑问,奇怪啊......高手请进

pineapple1175 2007-02-16 07:35:16
碰到一个很棘手的问题,不知各位以前又没碰到过,一个很简单的管道应用,myexec函数中execvp函数执行route以及ifconfig命令时情况良好,但是一执行iptables -L这个命令时就出现错误提示说Bad address,不知道什么原因,请高手帮忙. 代码如下:
void myexec(char buf[],char *cmdname,char **argv)
{
int n;
int fd[2];
int pid,status;
if( pipe(fd)<0 )
err_sys("myexec: open pipe fd1 error");
if( (pid=fork())<0 )
err_sys("myexec: fork error");
else if(pid==0)
{
close(fd[0]);
if(dup2(fd[1],STDOUT_FILENO)!=STDOUT_FILENO)
err_sys("myexec: dup fd[1] to stdout error in child process");
if( execvp(cmdname,argv)<0 )
{
//err_sys("myexec: execvp error in child process");
perror("myexec: execvp error in child process");
exit(1);
}
}
close(fd[1]);
if( (n=read(fd[0],buf,BUFSIZE))<0 )
err_sys("myexec: read from fd[0] error");
waitpid(pid,&status,0);
close(fd[0]);
}


void get_rules(char buf[])
{
char *cmdname="iptables";
char *argv[2];
int i;
for(i=0;i<2;i++)
argv[i]=NULL;
argv[0]=cmdname;
argv[1]="-L";
myexec(buf,cmdname,argv);
}

int main()
{
char buf[MAXLINE];
buf[0]='\0';
get_rules(buf);
printf("%s\n",buf);
/*get_route(buf);
printf("%s\n",buf);*/
return 0;
}
...全文
444 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
pineapple1175 2007-02-17
  • 打赏
  • 举报
回复
没一个人帮帮忙吗?

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧