2008-09-28 9 views
4

J'ai un projet qui nécessite l'utilisation de la famille exec. Mon projet consiste à faire un shell interactif. Le shell va implémenter quelques commandes de base comme cd, ls, echo, etc. J'ai recherché l'utilisation d'exec, mais je n'ai pas trouvé de site utile. Tous les liens suggérés aideraient.La famille exec

int ret; 
ret = execl ("/bin/ls", "ls", "-1", (char *)0); 

Comment afficher la sortie de cette opération sur l'écran?

Répondre

2

Le code que vous avez écrit fonctionne pour moi dans un programme de test simple qui ne fait rien d'autre. N'oubliez pas que lorsque vous appelez execl, le processus conserve tous les anciens descripteurs de fichiers. Donc quel que soit stdout lorsque vous appelez execl, il en sera de même lorsque le nouveau binaire est chargé. Si vous voulez juste que la sortie se rende au terminal, assurez-vous simplement que stdout va au terminal.

Si vous voulez faire des E/S avec un autre programme, popen est bon pour cela (comme mgb mentionné). Il va bifurquer un nouveau processus, configurer la plomberie pour vous, appeler une variante d'exec, et retourner une poignée de fichier que vous pouvez utiliser pour la communication.

4

faire

int fd = 1; 
dup(fd); 
close(fd); 

obtient la sortie à l'écran.