Question

J'ai un projet qui nécessite l'utilisation de la famille exec. Mon projet consiste à créer un shell interactif. Le shell implémentera quelques commandes de base telles que cd, ls, echo, etc. J'ai fait des recherches sur l'utilisation de exec, mais je n'ai pas trouvé de site utile. Tous les liens suggérés seraient utiles.

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

Comment puis-je afficher le résultat de cette opération à l'écran?

Était-ce utile?

La solution

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 fichier. Donc quelle que soit la sortie standard quand vous appelez execl, ce sera la même chose lorsque le nouveau fichier binaire est chargé. Si vous voulez juste que la sortie aille au terminal, assurez-vous que stdout se rend au terminal.

Si vous voulez faire des E / S avec un autre programme, popen est bon pour cela (comme mentionné par mgb). Il va créer un nouveau processus, configurer la plomberie pour vous, appeler une variante de exec et renvoyer un descripteur de fichier que vous pouvez utiliser pour la communication.

Autres conseils

faire

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

affiche le résultat à l'écran.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top