Redirection des E/S standard [C] - C++ - Programmation
Marsh Posté le 25-11-2002 à 14:21:14
lorill a écrit a écrit : man close man dup man open |
si c'est faisable en C standard, autant le faire avec les fonctions standard. Moi je n'utilises l'API C de Linux que lorsqu'il le faut.
d'autant plus que le type opaque FILE* offre un plus grand niveau d'abstraction que les descripteurs de fichiers et permet des entrées sorties avancées.
j'hesite pas a jongler entre les deux à l'aide de fileno
d'autant que certaines fonctions de l'API manipule aussi des FILE* (cf. popen)
Marsh Posté le 04-02-2003 à 20:20:48
Je dois rediriger les sorties std et err vers des sockets (par le biais d'un write (read par un autre poste). Comment faire?
Marsh Posté le 04-02-2003 à 20:39:37
lorill a écrit : man close |
ce qui peut etre fait en C standard doit etre fait en C standard, qui fournit je le rappelle des e/s bufferisées via le type opaque FILE*
Marsh Posté le 04-02-2003 à 20:42:25
++Taz a écrit : ce qui peut etre fait en C standard doit etre fait en C standard, qui fournit je le rappelle des e/s bufferisées via le type opaque FILE* |
oui, mais si il doit rediriger vers des sockets, c'est open/dup/close qu'il lui faut
Marsh Posté le 04-02-2003 à 20:46:05
meme pas fait gaffe que j'avais déjà posté ici. c'est quoi ce vieux topic?
Marsh Posté le 05-02-2003 à 12:20:35
C'est bon, j'ai utilisé dup pour rediriger les sorties vers mon socket. Comment faire pour que les résultats soient affichés à l'écran du client?
Marsh Posté le 05-02-2003 à 12:35:28
J'utilise aussi dup pour rediriger le socket vers les stderr et stdout?
Marsh Posté le 05-02-2003 à 12:45:06
J'ai toujours des read/write pour passer les commandes du client vers le serveur... ça ne posera pas des problèmes au milieur des dup? ou alors je fais la même chose avec des dup pour les stdin?
Marsh Posté le 06-02-2003 à 14:37:40
J'ai fait cela du coté serveur:
Code :
|
Mais je n'arrive pas a récupérer les résultats du coté client...
Coté client, j'envoir des commandes via un write. Ces commandes sont executées sur le serveur et les sorties stdout et stderr sont redirigées vers le socket. Le problème est que je n'arrive pas a récupérer ces résultats à partir du client pour les afficher à l'écran...
Marsh Posté le 09-02-2003 à 17:25:07
C'est bon, ça fonctionne. Juste un petit problème, ça plante quand STDOUT et STDERR sont vides... le read du client doit attendre qque chose et bloque tout... comment faire pour empêcher ce genre de chose?
Marsh Posté le 25-11-2002 à 14:10:21
Comment faire pour rediriger les entrées/sorties standard en C (sous Unix)?