当前位置: 技术问答>linux和unix
急急急!!!如何使C程序中循环调用linux的程序而不退出?
来源: 互联网 发布时间:2015-12-26
本文导语: 我在linux中写了一个小程序,调用curl抓取网页,但是循环中只能执行一次就会跳出循环不能再继续执行了,请问有什么方法解决没有? 程序如下 #include #include #include main(int argc,char *argv[]) { int i,j; char *argv1[]={"cu...
我在linux中写了一个小程序,调用curl抓取网页,但是循环中只能执行一次就会跳出循环不能再继续执行了,请问有什么方法解决没有?
程序如下
#include
#include
#include
main(int argc,char *argv[])
{
int i,j;
char *argv1[]={"curl","-o","/www/abc.html","http://www.abc.com/new.html",(char *)0};
i=(int)argv[0];
j=0;
while(1)
{
execv("/usr/local/curl/bin/curl",argv1);
//perror("why:");
printf("%dn",j);
sleep(5);
//end=clock();
j++;
printf("%d",j);
}
}
程序如下
#include
#include
#include
main(int argc,char *argv[])
{
int i,j;
char *argv1[]={"curl","-o","/www/abc.html","http://www.abc.com/new.html",(char *)0};
i=(int)argv[0];
j=0;
while(1)
{
execv("/usr/local/curl/bin/curl",argv1);
//perror("why:");
printf("%dn",j);
sleep(5);
//end=clock();
j++;
printf("%d",j);
}
}
|
exec后,被exec的程序会完全覆盖原程序进程空间,所以你的while循环无效。
用fork(),子进程exec,父进程等待即可。
while (1)
{
pid = fork();
if (pid == 0)
{
exec(....);
}
else
{
wait();
}
...
}
或者图简单用system("/usr/local/curl/bin/curl -o xxxx .. ");
用fork(),子进程exec,父进程等待即可。
while (1)
{
pid = fork();
if (pid == 0)
{
exec(....);
}
else
{
wait();
}
...
}
或者图简单用system("/usr/local/curl/bin/curl -o xxxx .. ");