Imprimer
Catégorie : R3.05 - Programmation système
Affichages : 6261

Création/recouvrement de processus (2)

Recouvrement de processus

xterm(1)

Utiliser la page de manuel de xterm(1) pour exécuter une commande dans la fenêtre terminal et maintenir la fenêtre ouverte la fin de l'exécution de cette commande.

Recouvrement

Écrire un programme creerterm cŕeant une fenêtre terminal à l'aide de la commande xterm.  Il est inutile d'utiliser fork(). Il ne faut évidemment pas utiliser ici les fonctions system() ou popen() !

Avec une commande

Modifier le programme précédent pour exécuter dans cette fenêtre terminal la commande passée en premier paramètre.  La fenêtre devra rester ouverte à la fin de la commande.

Prise d'identité (question facultative)

Reprendre le programme précédent et utiliser le bit de prise d'identité pour créer une fenêtre terminal exécutant un shell interactif avec les privilèges de root.

Remarques :

Fonction system()

Le but de l'exercice est de réécrire la fonction standard system(), qui permet d'exécuter une commande shell.  Son prototype est le suivant:

int system(const char *command);

Description

La fonction system() exécute la commande indiquée dans le paramètre command en appelant /bin/sh -c command , et revient après l'exécution complète de la commande. Durant cette exécution, les signaux SIGINT et SIGQUIT sont ignorés.

Valeur de retour

La valeur de retour de system() est une des valeurs suivantes :

Donnez, en langage C, une implémentation possible de la fonction system() qui respecte entièrement les spécifications ci-dessus.

Pour tester...