免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1226 | 回复: 4
打印 上一主题 下一主题

判断各描述符是否是tty设备问题. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-03-10 10:20 |只看该作者 |倒序浏览
刚在学习unix高级编程这本书

有这个程序:

  1. /* tty.c */

  2. #include <stdio.h>;
  3. #include <unistd.h>;

  4. void tty_info(int fd)
  5. {
  6.         int b = isatty(fd);
  7.         printf("fd=%d %s a tty\n", fd, b?"is":"isn`t");
  8.         if (b)
  9.         {
  10.                 printf("tty name is '%s'\n", ttyname(fd));
  11.         }
  12. }

  13. int main(int argc, char **argv)
  14. {
  15.         tty_info(0);        /* Query standard input */
  16.         tty_info(1);        /* Query standard output */
  17.         tty_info(2);        /* Query standard error */
  18.         return 0;
  19. }

复制代码


编译后执行 ./tty
fd=0 is a tty                     //标准输入
tty name is '/dev/ttyp2'
fd=1 is a tty                    //标准输出
tty name is '/dev/ttyp2'
fd=2 is a tty                   //错误
tty name is '/dev/ttyp2'

这是判断 标准输入描述符,标准输出描述符以及错误描述符是否是tty设备的吧?

我在运行
./tty 2>;/dev/null 时出现


  1. fd=0 is a tty
  2. tty name is '/dev/pts/2'
  3. fd=1 is a tty
  4. tty name is '/dev/pts/2'
  5. fd=2 isn`t a tty
复制代码

这是是  标准输入描述符,标准输出描述符是tty设备,而错误描述符不是,上面的这个命令是把  2 写入到 /dev/null文件中吧?但为什么会出现这个结果

还有按照书上的
./tty 2>;/dev/null </dev/null <=这个的意思,我没看懂,抱歉,请朋友帮忙解释一下, 我对LINUX命令,不太熟悉。
出现

  1. fd=0 isn`t a tty
  2. fd=1 is a tty
  3. tty name is '/dev/pts/2'
  4. fd=2 isn`t a tty
复制代码


这时只有 标准输出描述符是tty设备 了, 我都糊涂了~ 请理解的朋友能给我讲讲相关的知识么?感谢

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-03-10 10:25 |只看该作者

判断各描述符是否是tty设备问题.

2>;/dev/null
是把标准错误输出重定向为/dev/null ,
所以不是tty设备了。
</dev/null
是把标准输入重定向为/dev/null ,
道理一样了。

论坛徽章:
0
3 [报告]
发表于 2004-03-10 10:45 |只看该作者

判断各描述符是否是tty设备问题.

0 标准输入描述符
1 标准输出描述符
2 错误输出描述符

它们各自代表一个终端设备?

我还是不明白,0, 1, 2 以前指向什么,~ 然后为什么把2 指向/dev/null就不代表终端设备了,他们是什么~ 能否解释一下

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-03-10 11:27 |只看该作者

判断各描述符是否是tty设备问题.

原帖由 "ukalpa" 发表:
0 标准输入描述符
1 标准输出描述符
2 错误输出描述符

它们各自代表一个终端设备?

我还是不明白,0, 1, 2 以前指向什么,~ 然后为什么把2 指向/dev/null就不代表终端设备了,他们是什么~ 能否解释一下

在正常情况下,
0指键盘,
1指显示器,
2指显示器。
/dev/null
There is a special device know as /dev/null to which you can redirect unwanted output. This is a null (non-existent) device represented by the file null in the directory /dev .

论坛徽章:
0
5 [报告]
发表于 2004-03-10 12:02 |只看该作者

判断各描述符是否是tty设备问题.

感谢! 以后还会多麻烦你的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP