在我的 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 下载某些内容,但出现错误
最佳答案
execl
将当前运行的进程替换为已启动的进程。所以你的循环体只运行一次。您应该将 fork()
放在循环中,假设您想要 fork wget
的 numberOfDownloads
个实例。 (但要小心这样的事情)
否则,使用system()
,它不会终止您的进程,而是在wget
退出后返回到您的循环。或 popen()
,如果您需要对进程进行更多控制并希望读取 wget
输出,而无需自己执行所有繁重的 I/O 操作。
关于时间:2019-02-08 标签:c++calllinuxcommandsforkschilds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12469658/