Bonjour,
Je cherche a garder la main sur un programme que je lance avec la commande systeme ou exec ou autre.
Par exemple sous unix il existe un client ssh je voudrai le lancer mais garder la main sur ce process.
Comment faire.
Publicité
Posté le 30-06-2008 à 12:26:27
Elmoricq
Modérateur
Posté le 30-06-2008 à 12:29:43
Qu'appelles-tu "garder la main", je n'ai pas bien compris ton post. T'es en C et tu veux lancer une commande et continuer ton programme malgré tout ?
Message édité par Elmoricq le 30-06-2008 à 12:30:15
yartempion
Posté le 30-06-2008 à 12:44:46
Par exemple je veux lancer un com avec un routeur avec ssh.
Si je lance avec system() je n'ai pas la main sur le programme que je lance si je tape une commande ele sera d'abor interprétée par le shell avant d'etre interprétée par le routeur.
Par exemple je veux lancer un com avec un routeur avec ssh.
Si je lance avec system() je n'ai pas la main sur le programme que je lance si je tape une commande ele sera d'abor interprétée par le shell avant d'etre interprétée par le routeur.
Ah oui mais non. Si tu lances un shell dans ton programme, JAMAIS tu ne pourrais récupérer la commande dans ton programme. C'est le shell qui va l'interpréter.
yartempion
Posté le 01-07-2008 à 14:30:33
Resalut,
iIl n'existe aucun moyen de lancer un parocess et de lui rediriger son entrée ou sortie de flux sur le process qui l'a lancé pour lui envoyer des données?
stzup7
Posté le 01-07-2008 à 20:04:33
oui c'est possible
tu dois créer un pipe dans lequel le programme appelé ira lire
Elmoricq
Modérateur
Posté le 01-07-2008 à 20:24:51
Tu peux ouvrir un pipe avec popen().
Par contre, le flux d'un pipe est unidirectionnel : soit tu lis à partir de la sortie d'un processus, soit tu écris dans l'entrée standard du processus. Tu ne peux pas faire les deux en même temps.
stzup7
Posté le 01-07-2008 à 20:52:25
personnellement j'aurai utilisé pipe(), n'ayant jamais utilisé popen() auparavant.
fais selon tes besoins
EDIT : popen forke et crée le pipe lui même, il est en effet plus simple à utiliser.
Message édité par stzup7 le 01-07-2008 à 20:54:09
Elmoricq
Modérateur
Posté le 01-07-2008 à 22:04:57
Par contre popen c'est POSIX.2, alors que pipe c'est POSIX.1.
Selon sa plateforme, il n'aura peut-être que pipe() à disposition.
Publicité
Posté le 01-07-2008 à 22:04:57
yartempion
Posté le 02-07-2008 à 10:42:54
Salut,
Merci a vous je vais me lancer dans l'etude approfondis des tubes et faire des tests et je vous recontacte pour le résultat des courses. A+
matafan
Posté le 03-07-2008 à 13:52:31
J'ai toujours pas compris ce que tu voulais faire, mais c'est pas grave.