在我的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下载某些东西,但是我收到错误
答案 0 :(得分:3)
execl
用已启动的进程替换当前正在运行的进程。所以你的循环体只运行一次。您应该将fork()
放在循环中,假设您要分叉numberOfDownloads
wget
个实例。 (但要注意这些事情)
否则,请使用system()
,它不会终止您的流程,但会在wget
退出后返回您的循环。或者popen()
,如果您需要对流程进行更多控制并想要阅读wget
输出,而无需自己进行所有I / O重量提升。