0

在我的 c++ 程序中使用 linux 命令。尝试从数组列表中下载一个 url,一旦一个下载完成,下一个开始.... 目前只下载数组中的第一个位置,然后停止。

有人看到我正在做的错误吗?

// 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);  
    }
}

尝试使用命令 wget 下载内容,但出现错误

4

1 回答 1

3

execl用启动的进程替换当前运行的进程。所以你的循环体只运行一次。你应该把fork()循环放在里面,假设你想numberOfDownloads分叉wget. (但要小心这些事情)

否则,使用system(),它不会终止您的进程,而是在wget退出后返回您的循环。或者popen(),如果您需要更多地控制进程并想要读取wget输出,而不必自己完成所有 I/O 繁重的工作。

于 2012-09-18T02:40:33.683 回答