簡體   English   中英

分叉子進程

[英]forking child processes

使用一個簡單的下載器,它將以陣列形式下載文件項。

當前它將下載數組中的第一項,但是當for循環下載下一項時,它似乎停留在已下載的同一項上。

表示它不會遞增到下一項,但會運行應有的次數。

即有2個項目要下載,它將兩次下載陣列中的第一個項目。

我相信我做錯了分叉過程,或者計數器在for循環中被重置

// Begin the downloading process
pid_t child = 0;
child = fork();
wait();
if ( child < 0)
{
    cout << "Process Failed to Fork" <<endl;
    return 1;
}
if (child == 0)
    {
        wait();
    }
else
{

    for(int i = 0; i < numberOfDownloads; i++)
    {
    child = fork();
    wait();
    execl("/usr/bin/wget", "wget",locations[i], NULL);  
    }
}

問題是您的for循環派生時沒有考慮子代與父代,而子代和父代都以i == 0執行execl() 您需要像以前在代碼片段中一樣,根據fork()的返回包裝動作。

else
{
    for(int i = 0; i < numberOfDownloads; i++)
    {
        child = fork();
        if (child > 0) execl("/usr/bin/wget", "wget",locations[i], NULL);  
    }

    /* call wait() for each of your children here, if you wish to wait */
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM