Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1787 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C] Redirection des E/S standard

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Redirection des E/S standard

n°252917
thenutskil​ler
1+1=3
Posté le 25-11-2002 à 14:10:21  profilanswer
 

Comment faire pour rediriger les entrées/sorties standard en C (sous Unix)?

mood
Publicité
Posté le 25-11-2002 à 14:10:21  profilanswer
 

n°252919
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 25-11-2002 à 14:12:58  profilanswer
 

man freopen
 
 
exemple:
 
FILE *file_handle=freopen("log", "w", stderr);


---------------
du bon usage de rand [C] / [C++]
n°252920
lorill
Posté le 25-11-2002 à 14:13:07  profilanswer
 

man close
man dup
man open

n°252925
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 25-11-2002 à 14:21:14  profilanswer
 

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)


---------------
du bon usage de rand [C] / [C++]
n°301327
thenutskil​ler
1+1=3
Posté le 04-02-2003 à 20:20:48  profilanswer
 

Je dois rediriger les sorties std et err vers des sockets (par le biais d'un write (read par un autre poste). Comment faire?

n°301341
Taz
bisounours-codeur
Posté le 04-02-2003 à 20:39:37  profilanswer
 

lorill a écrit :

man close
man dup
man open

:pfff: 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*

n°301348
gloop
Posté le 04-02-2003 à 20:42:25  profilanswer
 

++Taz a écrit :

:pfff: 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

n°301351
Taz
bisounours-codeur
Posté le 04-02-2003 à 20:46:05  profilanswer
 

meme pas fait gaffe que j'avais déjà posté ici. c'est quoi ce vieux topic?

n°302169
thenutskil​ler
1+1=3
Posté le 05-02-2003 à 12:20:35  profilanswer
 

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?

n°302181
Taz
bisounours-codeur
Posté le 05-02-2003 à 12:29:35  profilanswer
 

ben la meme manipulation avec stdout

mood
Publicité
Posté le 05-02-2003 à 12:29:35  profilanswer
 

n°302190
thenutskil​ler
1+1=3
Posté le 05-02-2003 à 12:35:28  profilanswer
 

J'utilise aussi dup pour rediriger le socket vers les stderr et stdout?

n°302194
Taz
bisounours-codeur
Posté le 05-02-2003 à 12:41:18  profilanswer
 

ben oui

n°302197
thenutskil​ler
1+1=3
Posté le 05-02-2003 à 12:45:06  profilanswer
 

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?

n°303169
thenutskil​ler
1+1=3
Posté le 06-02-2003 à 14:37:40  profilanswer
 

J'ai fait cela du coté serveur:

Code :
  1. int fdstderr, fdstdout;
  2. fdstdout = dup(1);
  3. fdstderr = dup(2);
  4. //...
  5. dup2(socket, 1);
  6. dup2(socket, 2);
  7. //...
  8. read(...);
  9. //...
  10. // puis je ferme le socket et restaure les stdout et stderr
  11. // et je ferme les fdstderr et fdstdout à la fin
  12. //...


 
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...

n°304675
thenutskil​ler
1+1=3
Posté le 08-02-2003 à 19:24:11  profilanswer
 

UP

n°304889
thenutskil​ler
1+1=3
Posté le 09-02-2003 à 16:30:35  profilanswer
 

Personne n'a une idée?
Je fais un read?

n°304909
thenutskil​ler
1+1=3
Posté le 09-02-2003 à 17:25:07  profilanswer
 

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?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C] Redirection des E/S standard

 

Sujets relatifs
Redirection en fonction de la résolution [Resolu][HTML] Je tente le standard... c'est parti pour des questions ;)
redirection en js impossible : permission refusée???[Tomcat] exception dans une redirection
Quel standard HTML utiliser (HTML 4, XHTML, ...) ?moi po comprendre.... pb redirection comande DOS....
Comment faire une REDIRECTION auto au bout de x secondes ? [solutioné]Comment créer un lien ou une redirection vers une page asp...
commande 'time' : comment refiriger la sortie standard ??[HTML, JS] Redirection ? IE 5.0 et IE 5.5
Plus de sujets relatifs à : [C] Redirection des E/S standard


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR