accessoirement aussi les arguments sont deja des char *.
sinon dans mon premier test ca marchait mais en production avec un truc etrange.
voici ce qui se passe.
le serveur est lancer comme ceci
puis le terminal est imediatement ferme.
les fils sont lance depuis une page web. chaque fois que je lance un fils(avec les meme arguments) sont status est non lance,
et voici ce que me renvois top:
soit on a ./cunoserv qui est le serveur qui tourne bien, mais les autres sont tous morts.
le script php-cgi envois des requettes toutes les minutes pour demander le status des fils. le pere et les fils communiques par fichier txt la simple mise a jours du fichier permet de savoir qu'un fils est toujours en vie et ce qu'il est entrain de faire.
le serveur envois des reponses de ce genre
visiblement comme top me l'a dit le fils soit ./cuno SINA_sports.xml tournent bien mais c'est quoi tous les
cunoget <defunct>?
bon j'explique quand meme c'est quoi cunoget.
j'ai separer en deux programme. soit
1/cuno qui se contente de chercher des liens utiles a partir d'une url d'entree et quand ca liste est pleine il lance de la meme maniere que tu m'as montree cunoget.
2/cunoget lit une url puis telecharge le contenu extrait l'info, les photo, retire la pub, blablabla et ecrit un fichier xml qui contient ce qui nous interresse.
bon je montre comment je lance cunoget:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| LLinks *qq=Ll2;
while(qq!=NULL)
{
cntt(qq->link,opt);
qq=qq->next;
glo_tt1=time(NULL);
if(glo_tt1-glo_tt0>180)
{
// debug_log("Updating status file",NULL,LOG|INFO,LOG_INFO);
glo_tt0=glo_tt1;
saveStatus(glo_lastdate,opt->site_en,opt->categ_en,opt->channel_id,glo_pid);
}
}
destroyLLinks(&Ll2); |
voici ce que fait cntt
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| static void cntt(const char *url,OPT *opt)
{
char *md=MDString((char *)url);
addLink(&link_MD5,md,"3000");
if(fork()==0)
{
execl("./cunoget","cunoget",
url,md,opt->data_b,opt->data_e,opt->site_en,
opt->categ_en,opt->site,opt->categ,
opt->channel_id,opt->keyword_path,glo_dir,
opt->site_id,opt->categ_id,glo_lastdate,NULL);
}
free(md);
} |
je mets aussi comment cunoget recois les info a toute fin utile:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| int main(int argc, char **argv)
{
if(argc<15)
return 0;
KeywordExtraction_Init(argv[10]);
srand((unsigned int)time(NULL));
char loger[8192];
// fprintf(stderr,"Fetching %s\n",argv[1]);
WebPage *wp=getPage(argv[1],argv[14]);
char *md=argv[2];
char ctrl[8];
int alternum=rand()%999;
sprintf(ctrl,"%c%c%c%c%03d",md[31],md[11],md[1],md[7],alternum);
if(wp==NULL)
{
return 0;
}
int b=0,e=-1;
// releaseWebPage(&wp);return 0;
b=findStr(wp->html,argv[3],b);
...
... //bla bla bla
return 1; |
bon c'est top qui m'embete un peu car les fils ecrivent bien leur fichier chacun et il ferment bien le fichier. mais j'ai l'impression qu'ils ne se terminent pas correctement.