Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/12/2008, à 14:06

Inujel

Créer processus et rediriger IO

Bonjour !
Je débute en programmation sous UNIX et j'aurais besoin d'un coup de pouce (le titre dit déjà presque tout).
J'aurais besoin d'au sein d'un programme en C, d'ouvrir une nouvelle fenêtre de terminal et d'y exécuter un exécutable.
Merci d'avance !
Julien.

Hors ligne

#2 Le 05/12/2008, à 14:20

Link31

Re : Créer processus et rediriger IO

#include <stdlib.h>

int main(int argc, char *argv[])
{
	system("xterm -e 'une_commande > fichier_où_est_redirigée_la_sortie'");
	return 0;
}

Dernière modification par Link31 (Le 05/12/2008, à 14:22)

Hors ligne

#3 Le 05/12/2008, à 14:27

Inujel

Re : Créer processus et rediriger IO

Génial merci !

Hors ligne

#4 Le 05/12/2008, à 16:04

Link31

Re : Créer processus et rediriger IO

Au fait, pourquoi veux-tu ouvrir un terminal si c'est pour "rediriger la sortie" du processus (cf. le titre), ou inversement ?

Hors ligne

#5 Le 05/12/2008, à 16:08

philpep-tlse

Re : Créer processus et rediriger IO

Ouaip, system() est pratique car elle permet d'ecrire rapidement le code.

Par contre, tand que ton processus n'est pas terminé, le code n'est plus exécuté. (càd que le programme attend la mort du fils wait(NULL);)

Pour faire les choses proprement (car j'ai aussi souvent lu que system() caymal) il faut utiilser fork() pour dupliquer le processus puis un exec pour lancer le nouveau binnaire dans ce processus.

man fork
man 3 exec
man wait

ça permet de lancer le processus en backgound, par contre le code est moins marrant big_smile
Voilà la fonction d'exécution exec_file() d'un shell  que j'ai écris elle fait exactement ça.
(cas ou liste->flags & BG est VRAI)

Désolé, la fonction est lourde pour ce que tu veux faire, mais le principe y est :
http://tux-atome.fr/?p=philsh.git;a=blo … e3c49f48ba


le "lol" est aux boulets ce que le ";" est aux programmeurs
blog | Wiki Fvwm | Essayez le Window Manager From Scatch | Topic WMFS

Hors ligne

#6 Le 09/12/2008, à 10:24

Inujel

Re : Créer processus et rediriger IO

Link31> On s'est mal compris, je voulais dire rediriger la sortie vers le nouveau terminal, contrairement à un fork où la sortie est dans le même terminal que le père.

Merci philpep, mais je vais me contenter de la version rapide pour cet exercice ;-)

Hors ligne