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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Alain Ketterlin
Guillaume GOURDIN writes:
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.
Guillaume GOURDIN <gourdin@liw.fr> writes:
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(...) */
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
On Oct 2, 3:22 pm, Alain Ketterlin wrote:
Guillaume GOURDIN writes:
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
On Oct 2, 3:22 pm, Alain Ketterlin <al...@dpt-info.u-strasbg.fr>
wrote:
Guillaume GOURDIN <gour...@liw.fr> writes:
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:james.kanze@gmail.com
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
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