[HS] system(), fork()

Le
Guillaume GOURDIN
Bonjour à tous,

je voudrais lancer un processus avec system(), mais je voudrais que
l'appel de system() ne soit pas bloquant, et qui plus est, je voudrais
pouvoir tuer la commande appelée si besoin est. A priori je suis sous
Linux, mais s'il y a de solutons portables, je suis bien évidemment preneur.

Merci pour votre aide.
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Alain Ketterlin
Le #312008
Guillaume GOURDIN
je voudrais lancer un processus avec system(), mais je voudrais que
l'appel de system() ne soit pas bloquant, et qui plus est, je voudrais
pouvoir tuer la commande appelée si besoin est. A priori je suis sous
Linux, mais s'il y a de solutons portables, je suis bien évidemment
preneur.


Voir fork(2), execve(2), wait(2) et kill(2). En gros :

pid=fork();
if ( pid < 0 ) {
perror("fork");
exit(1);
} else if ( pid == 0 ) {
...
execve(...); /* ou execl(3), execlp, execv, execvp ... */
exit(1);
}
...
kill(pid,SIGTERM);
...
/* et peut-etre */
wait(&stat); /* ou waitpid(...) */

Tout ça c'est POSIX il me semble.

-- Alain.

James Kanze
Le #312005
On Oct 2, 3:22 pm, Alain Ketterlin wrote:
Guillaume GOURDIN
je voudrais lancer un processus avec system(), mais je voudrais que
l'appel de system() ne soit pas bloquant, et qui plus est, je voudrais
pouvoir tuer la commande appelée si besoin est. A priori je suis sous
Linux, mais s'il y a de solutons portables, je suis bien évidemment
preneur.


Voir fork(2), execve(2), wait(2) et kill(2). En gros :


[...]
Tout ça c'est POSIX il me semble.


Tout à fait. Et s'il a Posix, ou un interprêteur de commandes
plus ou moins compatible, il suffit qu'il ajoute un '&' à la fin
de la commande qu'il envoie à system(). (Mais ça n'a pas l'air de
marcher avec bash de CygWin sous Windows.)

--
James Kanze (GABI Software) email:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Publicité
Poster une réponse
Anonyme