正确使用exec命令在unix中调用wget

时间:2012-05-22 14:07:10

标签: c++ unix exec wget

我尝试从unix中的c ++程序调用wget。我想在使用fork之后在子进程内调用它,我需要使用exec而不是system()。我所做的是

pid_t pID = fork();
if (pID == 0)
{
   execl("/bin/wget","wget", "http://google.gr",(char*)0);
}

并希望在可执行文件所在的文件夹中有一个html文件, 但这不会发生,我应该怎么做呢?

1 个答案:

答案 0 :(得分:1)

首先,不要使用/bin/wget - wget并不总是安装在/bin;只在第一个参数中单独传递wget将导致搜索PATH。

其次,你不应该假设execl没有返回。相反,您应该调用perror()来正确记录错误(然后,在您的代码中,以非零状态退出)。

您还可以在父进程上使用strace -f查看正在发生的事情并查找exec,但在任何情况下,向代码添加错误处理都是正确的。