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.
É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()
!
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.
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.
<aside> ⚠️
Remarques :
geteuid()
).
</aside>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);
La fonction system()
exécute la commande indiquée dans le paramètre commande 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.
La valeur de retour de system()
est une des valeurs suivantes :
_exit(127)
.waitpid()
.