Processus qui boucle [Apache] - Linux et OS Alternatifs
Marsh Posté le 04-03-2002 à 15:33:44
jeremy a écrit a écrit : Bonjour, j'ai fait un CGI en C qui crée un processus qui va boucler. Donc le processus fils boucle et le processus père (celui lancé par le navigateur) se termine. (fork, execlp et compagnie) J'aimerai donc qu'au niveau du navigateur le processus se termine, mais que le processus fils continue de boucler. Or au niveau du navigateur on continue de voir la barre des taches se charger. Comment résoudre mon pb ? Merci. |
Pourquoi ne pas lancer le prog c a partir d'un script shell qui serait le cgi?
Marsh Posté le 04-03-2002 à 15:34:49
Je fait simplement un fork suivi d'un execlp qui lance donc le programme n°2 qui boucle.
Si je lance le programme au shell, il se termine bien directement et le processus qui boucle continue de boucler sans problème.
Or c'est quand je le lance en tant que CGI ke la barre des tachers continue de chercher indéfiniment, alors ke le 1er programme est bien terminé.
Une idée ?
Merci.
Marsh Posté le 04-03-2002 à 15:35:17
jean >
ca changerait quoi si ce n'est que tu n'auras plus du tout la main cette fois ?
[jfdsdjhfuetppo]--Message édité par saudium--[/jfdsdjhfuetppo]
Marsh Posté le 04-03-2002 à 15:36:30
jeremy a écrit a écrit : Je fait simplement un fork suivi d'un execlp qui lance donc le programme n°2 qui boucle. Si je lance le programme au shell, il se termine bien directement et le processus qui boucle continue de boucler sans problème. Or c'est quand je le lance en tant que CGI ke la barre des tachers continue de chercher indéfiniment, alors ke le 1er programme est bien terminé. Une idée ? Merci. |
le browser n'a pas recu un signal de fin
mais là je m'aventure
Marsh Posté le 04-03-2002 à 15:37:10
Jean>
en effet je crois ke je vais essayer merci.
Marsh Posté le 04-03-2002 à 15:39:10
saudium a écrit a écrit : le browser n'a pas recu un signal de fin mais là je m'aventure |
en effet çà doit etre çà mais comment résoudre çà, c un autre problème lol
Marsh Posté le 04-03-2002 à 15:41:06
Tout compte fait çà change rien en passant par un shell.
En fait faudrait en qque sorte réussir à lancer ce 2ème processus en tache de fond.
Marsh Posté le 04-03-2002 à 15:41:10
là je vais avancer des trucs meme pas vérifié :
killer le pid du process en question avant la terminaison du script
Marsh Posté le 04-03-2002 à 15:42:01
oops , j'ai peut etre mal lu le sujet du probleme
[jfdsdjhfuetppo]--Message édité par saudium--[/jfdsdjhfuetppo]
Marsh Posté le 04-03-2002 à 16:08:46
Donc si je résume, j'aimerai créer un processus qui fonctionnerait en mode asynchrone : le père crée le fils qui s'exécute en tache de fond et le père reprend la main et se termine.
Qqun pour m'aider ?
merci.
Marsh Posté le 04-03-2002 à 16:10:15
le pere reprend la main ?
ch'uis pas expert en fork mais il me semble que t'as du faire un exit suite au fork .
Dans ce cas , comment retrouver le pere ?
Marsh Posté le 04-03-2002 à 16:16:04
saudium a écrit a écrit : le pere reprend la main ? ch'uis pas expert en fork mais il me semble que t'as du faire un exit suite au fork . Dans ce cas , comment retrouver le pere ? |
Ben je différencie les 2 processus en fonction de la valeur renvoyée par fork.
Le pire c ke çà marche si je le lance à partir de la console, mais pas par Apache. Si je le lance en CGI, et ke je fais un ps -ef, le cgi est dans l'état <defunct> et le fils qui boucle et présent, et le navigateur patiente tjours.
Prise de tete power lol
Marsh Posté le 04-03-2002 à 16:19:55
attend , tu kill le pere ou non ?
Marsh Posté le 04-03-2002 à 16:22:52
Ben vi, le père se termine comme tout programme con en C, la différence c ke en lancant par Apache il se met en <defunct> alors k'a partir de la console il n'est plus dans la liste des processus en cours.
Louche power
Marsh Posté le 04-03-2002 à 16:24:55
jeremy a écrit a écrit : Ben vi, le père se termine comme tout programme con en C, |
faut le specifier :
if (fork() != 0)
exit(EXIT_SUCCESS);
Marsh Posté le 04-03-2002 à 16:29:21
saudium a écrit a écrit : faut le specifier : if (fork() != 0) exit(EXIT_SUCCESS); |
çà change rien :-\
Marsh Posté le 04-03-2002 à 16:30:20
peut etre voir du coté d'apache alors ...
Marsh Posté le 04-03-2002 à 15:29:43
Bonjour,
j'ai fait un CGI en C qui crée un processus qui va boucler.
Donc le processus fils boucle et le processus père (celui lancé par le navigateur) se termine. (fork, execlp et compagnie)
J'aimerai donc qu'au niveau du navigateur le processus se termine, mais que le processus fils continue de boucler.
Or au niveau du navigateur on continue de voir la barre des taches se charger.
Comment résoudre mon pb ?
Merci.
---------------
Savoir c'est vivre, et maintenir dans l'ignorance, c'est presque un homicide.