OVH Cloud OVH Cloud

lancer un binaire en c sur debian

16 réponses
Avatar
christo.leroy
bonjour,

voila, je viens de poser la question sur un forum de programmation en c
et on me renvoie ici, donc,
je suis en train de faire un programme en c qui va tourner sur debian,
et qui lance un binaire par une commande : systeme(binaire);

le langage c etant monotache ( c'est la reponse qu'on m'a faite sur le
forum c), le programme stoppe son execution tant que le binaire lancé
par system(...) n'a pas terminé son execution.

et on peut faire en sorte que le programme lance le binaire, et continue
sans s'inquieter de savoir s'il est fini ou pas.
on me dit que la solution est dans un appel au systeme d'exploitation (
DEBIAN ), et c'est là que j'ai besoin de vous.
la Debian permet elle cela ?
on parle de la fonction fork() ?

désolé d'etre un peu hors sujet, mais on pourrait reformuler la question
comme cela:

la Debian permet elle de contourner le fait que le C soit monotache,en
faisant tourner un programme en C qui lance un binaire (par la commande
system() ) tout en continuant son execution (sans attendre la fin du
binaire lancé).

allez, merci et bonne journée.

dédé le homard


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

6 réponses

1 2
Avatar
christo.leroy
merci de toutes vos réponses.
un petit peu de hors sujet ne fait pas de mal,
ça ouvre l'esprit...
pas trop bien sur, mais quand meme,
il y a eu plusieurs réponses, donc le sujet a intéressé
du monde.

bonne journée






--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Boukhairi Abderahim
Voir aussi du coté des threads (librairies PTHREADS)

christo.leroy wrote:

Erwan David a écrit :

Le Wed 21/07/2004, christo.leroy disait


en effet, je n'en suis pas encore là, c'est le chapitre suivant de
ma formation, merci d'avoir répondu.





bonne journée






Oui. Mais visiblement tu as besoin d'apprendre la programmation
Unix. Pour ça je te conseille
"La programmation sous Unix" de Jean-Marie Rifflet, ce fut chez
Edisciences puis interEditions, je ne connais pas l'éditeur actuel.












--
Boukhairi Abderahim
INRA BIA
0561285065
~*-,._.,-*~''~*-,._.,-*~''~HUMEUR,-*~''~*-,._.,-*~''~*-,._.,-*~
C'est en vain qu'au Parnasse un téméraire auteur
Pense de l'art des vers atteindre la hauteur ...
Si son astre en naissant ne l'a formé poète ...
Pour lui Phébus est sourd, et Pégase est rétif.
Nicholas Boileau-Despreaux: L'Art poétique
~*-,._.,-*~''~*-,._.,-*~''~FIN-HUMEUR,- CMTUSBLA INC -*~''~*-,
1010101111011110 binaire = 125736 octal = 43998 decimal = ABDE hexadecimal ;)


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Faycal Chraibi
Le mer 21/07/2004 à 14:51, christo.leroy a écrit :
bonjour,



<snip>
la Debian permet elle de contourner le fait que le C soit monotache,en
faisant tourner un programme en C qui lance un binaire (par la commande
system() ) tout en continuant son execution (sans attendre la fin du
binaire lancé).


</snip>

Bonjour,

C'est le système d'exploitation qui permet de gérer ou pas du
multi-tâches, or le kernel Linux le gère très bien.
En C, tu peux achever ce que tu veux de deux manières différentes:

- Utilisation de fork() (ou clone() sous Linux uniquement), fonction qui
créera un processus fils dans lequel tu peux executer l'instruction que
tu veux, notament le lancement de ton binaire. A ce sujet, je
préconiserai plutot l'utilisation des fonctions exec* (execve, execvp
etc..) plutot que system().
- L'utilisation de threads, tu peux regarder les pages man de
pthread_create (et fonctions associées) et faire appel à ton processus
externe.

Cordialement,

- Faycal Chraibi
Avatar
fra-duf-no-spam
Le 12620ième jour après Epoch,
christo leroy écrivait:

merci de toutes vos réponses.
un petit peu de hors sujet ne fait pas de mal,
ça ouvre l'esprit...
pas trop bien sur, mais quand meme,



Je ne te le fais pas dire :)

il y a eu plusieurs réponses, donc le sujet a intéressé
du monde.



Non, c'est juste que comme c'était simple, tu as eu plusieurs réponses
à la question ;)


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Simon L
christo.leroy wrote:

bonjour,

voila, je viens de poser la question sur un forum de programmation en
c et on me renvoie ici, donc,
je suis en train de faire un programme en c qui va tourner sur debian,
et qui lance un binaire par une commande : systeme(binaire);

le langage c etant monotache ( c'est la reponse qu'on m'a faite sur le
forum c), le programme stoppe son execution tant que le binaire lancé
par system(...) n'a pas terminé son execution.

et on peut faire en sorte que le programme lance le binaire, et
continue sans s'inquieter de savoir s'il est fini ou pas.
on me dit que la solution est dans un appel au systeme d'exploitation
( DEBIAN ), et c'est là que j'ai besoin de vous.
la Debian permet elle cela ?
on parle de la fonction fork() ?

désolé d'etre un peu hors sujet, mais on pourrait reformuler la
question comme cela:

la Debian permet elle de contourner le fait que le C soit monotache,en
faisant tourner un programme en C qui lance un binaire (par la
commande system() ) tout en continuant son execution (sans attendre la
fin du binaire lancé).

allez, merci et bonne journée.

dédé le homard




Le plus simple est mettons que tu veux lancer /bin/chose, alors tu marques:
system("/bin/chose &");

le "&" à pour effet de lancer un programme et de le laisser rouler en
arrière. Si tu le fais dans une console, tu verras toutes les sorties et
tu pourras lancer d'autres programmes ou faire d'autres choses avec ton
shell. Cela marchait aussi dans les programmes.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
christo.leroy
Simon L a écrit :

christo.leroy wrote:

bonjour,

ah ok merci, j'essaie ça aussi.





on dirait que la solution est dans fork() et exec(), mais là je n'ai pas
le temps de m'y mettre, alors tant pis, ça restera de coté jusqu'à ce
que je puisse
bien assimiler les fork() execl(), pères , fils et cousines...
mais merci du tuyau, ça va me servir..
ciao






Le plus simple est mettons que tu veux lancer /bin/chose, alors tu
marques:
system("/bin/chose &");

le "&" à pour effet de lancer un programme et de le laisser rouler en
arrière. Si tu le fais dans une console, tu verras toutes les sorties
et tu pourras lancer d'autres programmes ou faire d'autres choses avec
ton shell. Cela marchait aussi dans les programmes.







--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
1 2