曲径通幽论坛

标题: ttyname() -- 获得终端名称 [打印本页]

作者: beyes    时间: 2012-1-2 12:09
标题: ttyname() -- 获得终端名称
ttyname() 原型如下:
[C++] 纯文本查看 复制代码
#include <unistd.h>

char *ttyname(int fd);


如果一个终端在某个文件描述符 fd 上打开,那么函数就返回该描述符对应的终端名,否则返回 NULL 。函数返回的字符串是个静态数据,再次调用函数时将被覆盖。

测试代码
[C++] 纯文本查看 复制代码
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>


int main()
{
    char *dev_name;


    dev_name = ttyname(STDIN_FILENO);
    printf ("%s\n", dev_name);


    dev_name = ttyname(STDOUT_FILENO);
    printf ("%s\n", dev_name);
    
    dev_name = ttyname(STDERR_FILENO);
    printf ("%s\n", dev_name);
    
    int fd;


    fd = open("/dev/tty", O_RDONLY);
    dev_name = ttyname(fd);
    printf ("%s\n", dev_name);


    return 0;
}

运行输出:
./ttyname
/dev/pts/1
/dev/pts/1
/dev/pts/1
/dev/tty





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2