c++;调用linux命令forks childs < >在我的C++程序中使用Linux命令。正在尝试从数组列表下载url,一旦一个下载完成,下一个将开始。。。。当前仅下载阵列中的第一个位置,然后停止

c++;调用linux命令forks childs < >在我的C++程序中使用Linux命令。正在尝试从数组列表下载url,一旦一个下载完成,下一个将开始。。。。当前仅下载阵列中的第一个位置,然后停止,c++,linux,fork,wget,C++,Linux,Fork,Wget,有人看到我犯的错误了吗 // Begin the downloading process pid_t child = 0; child = fork(); if ( child < 0) { cout << "Process Faileld to Fork<<endl; return 1; } if (child == 0) { wait(NULL); } else { for(int i = 0; i &l

有人看到我犯的错误了吗

// Begin the downloading process
pid_t child = 0;
child = fork();

if ( child < 0)
{
    cout << "Process Faileld to Fork<<endl;
    return 1;
}
if (child == 0)
    {
        wait(NULL);
    }
else
{
    for(int i = 0; i < numberOfDownloads; i++)
    {
    execl("/usr/bin/wget", "wget",locations[i], NULL);  
    }
}
//开始下载过程
pid_t child=0;
child=fork();
if(子级<0)
{

cout
execl
将当前正在运行的进程替换为已启动的进程。因此,循环体只运行一次。您应该将
fork()
放在循环内,假设您想分叉
wget
numberOfDownloads
实例(但要小心这些事情)


否则,请使用
system()
,它不会终止进程,而是在
wget
退出后返回循环。或
popen()
,如果您需要对进程进行更多控制,并且希望读取
wget
输出,而不必自己执行所有I/O重载。

execl
将当前运行的进程替换为已启动的进程。因此循环体只运行一次。您应该将
fork()放在
在循环内部,假设您想要分叉
numberOfDownloads
wget
的实例(但是要小心这些事情)


否则,请使用
system()
,它不会终止进程,而是在
wget
退出后返回循环。或
popen()
,如果您需要对流程进行更多控制,并且希望阅读
wget
输出,而不必自己进行所有I/O重载。

您可以提供一个完整的可编译示例吗?那么我可能会尝试您的代码而不是忽略您的问题。您可以提供一个完整的可编译示例吗?然后我可能会请尝试您的代码,而不是忽略您的问题,甚至使用
libcurl
库执行HTTP请求,而不使用
wget
,甚至使用
libcurl
库执行HTTP请求,而不使用
wget