Python os.ttyname() - 获取与指定的文件描述符相关联的终端设备

Python os.ttyname()

Python中的os.ttyname()方法用于获取与指定的文件描述符相关联的终端设备

文件描述符是一个小整型值,对应于一个文件或其他输入/输出资源,如管道或网络套接字。它是一个资源的抽象指示器,并作为句柄来执行各种较低级的I/O操作,如读、写、发送等。

例如:标准输入通常是值为0的文件描述符,标准输出通常是值为1的文件描述符,标准错误通常是值为2的文件描述符。这些文件描述符i. e0 (stdin)、1 (stdout)和2 (stderr)是程序使用的标准文件描述符。当前进程打开的其他文件将获得值3、4、5等等。

注意:此方法仅在UNIX平台上可用,如果指定的文件描述符不与任何终端设备关联,则会引发异常。

语法:os.ttyname(fd)

参数:

fd:文件描述符

返回类型:该方法返回一个字符串值,表示与指定的文件描述符fd关联的终端设备。

示例1

使用os.tyname()方法来获取与文件描述符相关的终端设备。

# Python program to explain os.ttyname() method  
  
# importing os module 
import os
  
  
# Standard file descriptors
# i.e 0 (stdin), 1 (stdout), and 2 (stderr)
# are used by our program 
# Get the terminal device 
# associated with these file descriptor
print("Terminal device associated with:")
print("Standard input:", os.ttyname(0))
print("Standard output:", os.ttyname(1))
print("standard error", os.ttyname(2))
  
  
# Open a new pseudo-terminal pair
# using os.openpty() method
# It will return master and slave 
# file descriptor for 
# pty ( pseudo terminal device) and
# tty ( native terminal device) respectively
master, slave = os.openpty()
  
# Get the terminal device 
# associated with these file descriptor
print("Master:", os.ttyname(master))
print("Slave:", os.ttyname(slave))
Python

输出:

Terminal device associated with:
Standard input: /dev/pts/0
Standard output: /dev/pts/0
standard error /dev/pts/0
Master: /dev/ptmx
Slave: /dev/pts/1
Python

示例2

如果指定的文件描述符不与任何终端设备关联

# Python program to explain os.ttyname() method  
  
# importing os module 
import os
  
  
# If the specified file descriptor
# is not associated with any 
# terminal device, then an exception
# will be raised. For example:
  
# Create a pipe using os.pipe() method
# It will return a pair of 
# file descriptors (r, w) usable for
# reading and writing, respectively.
r, w = os.pipe()
  
# Get the terminal device associated 
# with the file descriptor r or w
print(os.ttyname(r)) 
Python

输出:

Traceback (most recent call last):
  File "getTerminalDevice.py", line 20, in 
    print(os.ttyname(r))
OSError: [Errno 25] Inappropriate ioctl for device
Python

示例3

处理上述异常的方法

# Python program to explain os.ttyname() method  
  
# importing os module 
import os
  
  
# Create a pipe using os.pipe() method
# It will return a pair of 
# file descriptors (r, w) usable for
# reading and writing, respectively.
r, w = os.pipe()
  
# Method 1 
# (using exception handling technique)
# Try to get the terminal device associated 
# with the file descriptor r or w
try :
    print(os.ttyname(r)) 
except OSError as error :
    print(error)
    print("File descriptor is not associated with any terminal device")
  
  
# Method 2
# using os.isatty() method
# check first if the file descriptor w
# is associated with a tty(-like) device or not
# if it is then only get the terminal
# device associated with it
if os.isatty(w) :
    print(os.ttyname(w))
else :
    print("File descriptor is not associated with any terminal device")
Python

输出:

[Errno 25] Inappropriate ioctl for device
File descriptor is not associated with any terminal device
File descriptor is not associated with any terminal device
Python

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册