0

私のC ++プログラムでLinuxコマンドを使用しています。配列のリストから URL をダウンロードしようとしています。1 つのダウンロードが完了すると、次のダウンロードが開始されます。現在、配列の最初の場所のみをダウンロードしてから停止します。

誰かが私がやっているエラーを見ますか?

// 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()を分岐させたいと仮定して、 をループ内に配置する必要があります。(ただし、そのようなことには注意してください)numberOfDownloadswget

それ以外の場合は、system()プロセスを終了せず、終了後にループに戻りwgetます。またはpopen()、プロセスをより詳細に制御する必要があり、wgetすべての I/O の面倒な作業を自分で行う必要なく、出力を読みたい場合。

于 2012-09-18T02:40:33.683 に答える