为什么ttyname(2)的结果是/dev/pts/0 ?
#include stdio.h #include stdlib.h #include unistd.h int main( void ) { if( isatty( 0 ) ) { printf( %s\n, ttyname( 1 ) ); } else { printf( \n ); } return EXIT_SU CC ESS; } # ./a.out /dev/pts/0 # ls -l /dev/pts/ 总用量 0 crw--w---- 1 root t
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main( void )
{
if( isatty( 0 ) ) {
printf( "%s\n", ttyname( 1 ) );
} else {
printf( "\n" );
}
return EXIT_SU
CCESS;
}
# ./a.out
/dev/pts/0
# ls -l /dev/pts/
总用量 0
crw--w---- 1 root tty 136, 0 2004-01-20 15:01 0
crw------- 1 root tty 136, 1 2004-01-20 14:45 1
不知道你是那里出了问题,我运行以后是/dev/pts/1
刚才再试了一次,(不管这个程序是否已编译,再编译一次,防止记错),还是一样。。上面得ttyname(2).和程序里的ttynamne(1)的差别我发现了。是我发贴是改为其它值试试的。。。
tttyname(1)-----》还是/dev/pts/0
不懂了。。
1)
$ mount
/dev/md0 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/md1 on /boot type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
none on /dev/shm type tmpfs (rw)
其中/dev/pts是远程登陆(telnet,ssh等)后创建的控制台设备文件所在的目录。由于可能有好几千个用户登陆,所以/dev/pts其实是动态生成的,不象其他设备文件是构建系统时就已经产生的硬盘节点(如果未使用devfs)
2)
第一个用户登陆,console的设备文件为/dev/pts/0,第二个为/dev/pts/1,以此类推。这里的0、1、2、3不是具体的标准输入或输出,而是整个控制台。你可尝试 echo "aaaaaa" > /dev/pts0、1、2……。
原文转自:http://www.ltesting.net
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
|