LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 753|回复: 9

这个程序锁住了终端

[复制链接]
发表于 2004-5-23 10:20:28 | 显示全部楼层 |阅读模式
用read /dev/ttyv1
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. int
  4. main(int argc,char **argv)
  5. {
  6.         FILE                            *fp;
  7.         int                             c;
  8.         if(argc != 2 ) {
  9.                 printf("Usage : %s <terminal>\n",argv[0]);
  10.                 exit(1);
  11.         }
  12.         if((fp=fopen(argv[1],"r"))<0) {
  13.                 perror("open error");
  14.                 exit(1);
  15.         }
  16.         for ( ; ; ) {
  17.                 fflush(stdin);
  18.                 fflush(stdout);
  19.                 while((c=fgetc(fp)) != NULL )
  20.                         fputc(c,stdout);
  21.                 fflush(stdin);
  22.                 fflush(stdout);
  23.         }
  24.         fclose(fp);
  25.         return(0);
  26. }
复制代码
目的:
怎么把终端的标准输出和错误输出复制一份给另一个终端?
发表于 2004-5-23 20:35:50 | 显示全部楼层
什么意思?!!
如果是要把某个程序的输出定向到当前的控制台,有一个/dev/tty,可以满足你的要求。
 楼主| 发表于 2004-5-23 22:34:24 | 显示全部楼层
就好象你在这个终端能正常出入和执行命令,这些都在另一个终端打印出来。。
仅把标准输出和stderr打印出来,不参与命令的执行。
发表于 2004-5-24 20:07:48 | 显示全部楼层
用重定向可以办到吧.
 楼主| 发表于 2004-5-24 21:09:33 | 显示全部楼层
最初由 kj501 发表
用重定向可以办到吧.


重定向那正常终端的输出??没有了。。
发表于 2004-5-24 21:41:23 | 显示全部楼层
我用DOS下的tc编译.
结果只有两个错误..........
发表于 2004-5-24 21:47:40 | 显示全部楼层
最初由 huyongzs 发表
我用DOS下的tc编译.
结果只有两个错误..........

晕~~~~~
UNIX tty编程竟然在DOS下编译……
发表于 2004-5-24 22:51:46 | 显示全部楼层
估计一处是<unistd.h>
一处是/dev/ttyv1
发表于 2004-5-25 20:36:39 | 显示全部楼层
最初由 home 发表
重定向那正常终端的输出??没有了。。

如果必需要实现这样的功能,可以参考tee的做法。将程序的运行结果通过管道重定向到tee,tee从stdin读入数据后,向stdout写出,同时,把同样的输入写到别一个文件中,有兴趣看看tee的源代码。
发表于 2004-5-25 22:08:07 | 显示全部楼层
最初由 home 发表
重定向那正常终端的输出??没有了。。

那调用tee(我也不知道程序里头怎么调用:p),把另一个tty作为文件,行不行?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表