c++;调用linux命令forks childs < >在我的C++程序中使用Linux命令。正在尝试从数组列表下载url,一旦一个下载完成,下一个将开始。。。。当前仅下载阵列中的第一个位置,然后停止
有人看到我犯的错误了吗c++;调用linux命令forks childs < >在我的C++程序中使用Linux命令。正在尝试从数组列表下载url,一旦一个下载完成,下一个将开始。。。。当前仅下载阵列中的第一个位置,然后停止,c++,linux,fork,wget,C++,Linux,Fork,Wget,有人看到我犯的错误了吗 // 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 &l
// 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);
}
}
//开始下载过程
pid_t child=0;
child=fork();
if(子级<0)
{
coutexecl
将当前正在运行的进程替换为已启动的进程。因此,循环体只运行一次。您应该将fork()
放在循环内,假设您想分叉wget
的numberOfDownloads
实例(但要小心这些事情)
否则,请使用system()
,它不会终止进程,而是在wget
退出后返回循环。或popen()
,如果您需要对进程进行更多控制,并且希望读取wget
输出,而不必自己执行所有I/O重载。execl
将当前运行的进程替换为已启动的进程。因此循环体只运行一次。您应该将fork()放在
在循环内部,假设您想要分叉numberOfDownloads
wget
的实例(但是要小心这些事情)
否则,请使用
system()
,它不会终止进程,而是在wget
退出后返回循环。或popen()
,如果您需要对流程进行更多控制,并且希望阅读wget
输出,而不必自己进行所有I/O重载。您可以提供一个完整的可编译示例吗?那么我可能会尝试您的代码而不是忽略您的问题。您可以提供一个完整的可编译示例吗?然后我可能会请尝试您的代码,而不是忽略您的问题,甚至使用libcurl
库执行HTTP请求,而不使用wget
,甚至使用libcurl
库执行HTTP请求,而不使用wget