我尝试从unix中的c ++程序调用wget。我想在使用fork之后在子进程内调用它,我需要使用exec而不是system()。我所做的是
pid_t pID = fork();
if (pID == 0)
{
execl("/bin/wget","wget", "http://google.gr",(char*)0);
}
并希望在可执行文件所在的文件夹中有一个html文件, 但这不会发生,我应该怎么做呢?
答案 0 :(得分:1)
首先,不要使用/bin/wget
- wget
并不总是安装在/bin
;只在第一个参数中单独传递wget
将导致搜索PATH。
其次,你不应该假设execl
没有返回。相反,您应该调用perror()
来正确记录错误(然后,在您的代码中,以非零状态退出)。
您还可以在父进程上使用strace -f
查看正在发生的事情并查找exec,但在任何情况下,向代码添加错误处理都是正确的。