#include #include extern char**environ; //default char *argv1[]={"xterm","/bin/fsh",0}; int main(int argc, char **argv) { _gui_win(); vesa_init(NULL); void *tty=terminal_init_vesa(); //int xterm_in[2]; int xterm_out[2]; //_pipe(xterm_in); _pipe(xterm_out); int pid=_fork(); if(!pid) { int tty_fd=_open("/dev/tty"); //_close(xterm_in[1]); _close(xterm_out[0]); _dup2(tty_fd,0);// stdin _dup2(xterm_out[1],1);// stdout _dup2(xterm_out[1],2);// stderr // replace process with our foolshell or whatever if(argc==1)_execve(argv1[1],argv1,environ); _execve(argv[1],argv,environ); while(1); } //_close(xterm_in[0]); _close(xterm_out[1]); //_dup2(xterm_in[1],0); // compositor writes here. //_close(xterm_in[1]); while(1) { char buf[1]; _read(xterm_out[0],buf,1); // show what foolshell writes to its stdout/stderr terminal_put(tty,buf[0]); _gui_rect(); } }