xterm|xterm

xterm|xterm - C - Programmation

Marsh Posté le 29-06-2003 à 11:13:10    

pourquoi est ce ke : "xterm|xterm" ne redirige pas l'output standart du premier vers l'input du deuxieme?

Reply

Marsh Posté le 29-06-2003 à 11:13:10   

Reply

Marsh Posté le 29-06-2003 à 16:31:57    

j'ai testé avec :

Code :
  1. if(pipe(pipe_descr)==-1)
  2.   erreur("creation pipe" );
  3.  do{
  4.   pid_fils = fork ();
  5.  } while ((pid_fils == -1) && (errno == EAGAIN));
  6.  if (pid_fils == -1)
  7.   erreur("fork() impossible" );
  8.  if (pid_fils == 0) {
  9.   /* processus fils*/
  10.   fclose(stdout);
  11.   dup(pipe_descr[1]);
  12.   close(pipe_descr[0]);
  13.   close(pipe_descr[1]);
  14.   if(execl("/usr/bin/x-terminal-emulator", "-e ./test_in", NULL)==-1)
  15.    erreur("fils : execl" );
  16.  }
  17.  else{
  18.   fclose(stdin);
  19.   dup(pipe_descr[0]);
  20.   close(pipe_descr[0]);
  21.   close(pipe_descr[1]);
  22.   if(execl("/usr/bin/x-terminal-emulator","-e ./test_out", NULL)==-1)
  23.    erreur("père : execl" );
  24.  }


Même si je m'en doutai, ça reviens au même mais j'ai visiblement un problème avec mon "execl" et le passage des arguments à xterm; je comprend pas pourquoi, mais test_out et test_in ne sont pas executé dans mes xterm c'est le bash ki est lancé et de plus je n'arrive à donné que un seul argument?
 
ceci marchai très bien :

Code :
  1. system("xterm -bd black -bg black -fg green -geometry 70x15+330+190 -T localComAreaDST  -e ./localComAreaDST&" );

mais par contre :

Code :
  1. if(execl("/usr/bin/x-terminal-emulator",  "-bd black", "-bg black",  "-fg green",  "-geometry 70x5+330+415",  "-T localComArea_input" "-fg green","-e ./localComArea_in", NULL)==-1)
  2.    erreur("père : execl" );


ce bout de code assigne ce qui suit a errno :

Citation :

-bd black:  bad command line option "-bg black"
 
usage:   -bd black [-/+132] [-C] [-Sccn] [-T string] [-/+ah] [-/+ai] [-/+aw] [-b number] [-/+bc] [-bcf milliseconds] [-bcn milliseconds] [-bd color] [-/+bdc] [-bg color] [-bw number] [-/+cb] [-cc classrange] [-/+cjk_width] [-class string] [-/+cm] [-/+cn] [-cr color] [-/+cu] [-/+dc] [-display displayname] [-e command args ...] [-fa pattern] [-fb fontname] [-/+fbb] [-/+fbx] [-fg color] [-fi fontname] [-fn fontname] [-fs size] [-fw fontname] [-fwb fontname] [-fx fontname] [%geom] [#geom] [-geometry geom] [-hc color] [-help] [-/+hold] [-iconic] [-/+ie] [-/+im] [-into windowId] [-/+j] [-/+l] [-/+lc] [-lcc path] [-leftbar] [-lf filename] [-/+ls] [-/+mb] [-mc milliseconds] [-/+mesg] [-ms color] [-n string] [-name string] [-nb number] [-/+nul] [-/+pc] [-/+pob] [-rightbar] [-/+rv] [-/+rvc] [-/+rw] [-/+s] [-/+samename] [-/+sb] [-/+sf] [-/+si] [-/+sk] [-sl number] [-/+sm] [-/+sp] [-/+t] [-ti termid] [-title string] [-tm string] [-tn name] [-/+u8] [-/+ulc] [-/+ut] [-/+vb] [-version] [-/+wc] [-/+wf] [-xrm resourcestring] [-ziconbeep percent]
 
Type -bd black -help for a full description.


je sais pas si quequ'un a une idée de la raison?


Message édité par peak le 29-06-2003 à 18:05:58
Reply

Marsh Posté le 01-07-2003 à 22:13:49    

ben mince alors, moi je trouve pas  :??:  :??:  
Je capte vraiment pas pourquoi ce execl() marche pas alors ke le system() marche!?

Reply

Marsh Posté le 05-07-2003 à 21:59:43    

hahaha, la bonne blague!!

Code :
  1. if(execl("/usr/bin/x-terminal-emulator",  "-bd", "black", "-bg", "black",  "-fg", "green",  "-geometry", "70x5+330+415",  "-T", "localComArea_input", "-fg", "green","-e", "./localComArea_in", NULL)==-1)


ceci marche bien mieux!!
 
edit:: j'ai parlé trop vitte en se qui conserne les files descriptors; seul les 3premiers sont ecrasé par l'execution de xterm.


Message édité par peak le 08-07-2003 à 17:13:57
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed