Linux系统中提供了ttyname函数,用于判断某个打开的文件描述符是否是某个终端设备。如果是,则返回终端设备的名称,该函数的具体信息如表6.1所示。
表6.1 ttyname函数
说明:ttyname函数用于返回终端的名称,其中fd为打开终端而获得文件描述符。
表6.1 ttyname函数
头文件 | <unistd.h> | ||
函数形式 | char *ttyname(int fd); | ||
返回值 | 成功 | 失败 | 是否设置errno |
返回终端设备的名称 | NULL | 是 |
错误信息:
EBADF:非法文件描述符。
ENOTTY:该文件描述符非终端设备描述符。
实例演练:
在程序p6.1.c中,通过使用ttyname函数获得了标准输入、标准输出和标准错误输出的终端名称。具体代码如下:
|
使用gcc编译p6.1.c程序,获得名为p6.1的可执行程序。执行该程序,对比who命令的输出结果,发现标准输入、标准输出和标准错误输出的终端都被设置为了pts/6。具体过程如下:
[program@localhost charter6]$ gcc -o p6.1 p6.1.c [program@localhost charter6]$ ./p6.1 STDOUT_FILENO tty name is :/dev/pts/6 STDIN_FILENO tty name is :/dev/pts/6 STDERR_FILENO tty name is :/dev/pts/6 [program@localhost charter6]$ who root pts/3 2007-01-07 21:25 (:0.0) program pts/6 2007-01-07 22:57 (192.168.106.1) [program@localhost charter6]$ |