11.8行控制函数

下列四个函数提供了终端设备的行控制能力。参数filedes引用一个终端设备,否则出错返回,errno设置为ENOTTY。


#include <termios.h>

int tcdrain(int filedes) ;

int tcflow(int filedes, int action) ;

int tcflush(int filedes, int que) ;

int tcsendbreak(int filedes, int duration) ;

</termios.h>

四个函数返回:若成功则为0,若出错则为-1。

tcdrain函数等待所有输出都被发送。

tcflow用于对输入和输出流控制进行控制。action参数应当是下列四个值之一:

  • TCOOFF 输出被挂起。

  • TCOON 以前被挂起的输出被重新起动。

  • TCIOFF 系统发送一个STOP字符。这将使终端设备暂停发送数据。

  • TCION 系统发送一个START字符。这将使终端恢复发送数据。

tcflush函数刷清(抛弃)输入缓存(终端驱动程序已接收到,但用户程序尚未读)或输出缓存(用户程序已经写,但尚未发送)。que参数应当是下列三个常数之一:

  • TCIFLUSH 刷清输入队列。

  • TCOFLUSH 刷清输出队列。

  • TCIOFLUSH 刷清输入、输出队列。

tcsendbreak函数在一个指定的时间区间内发送连续的0位流。若duration参数为0,则此种发送延续0.25~0.5秒之间。POSIX.1说明若duration非0,则发送时间依赖于实现。SVR4 SVID说明若duration非0,则不发送0位。但是,SVR4手册页中说,若duration非0,则tcsendbreak的行为与tcdrain一样。另一个系统手册页则说,若duration非0,则传送0位的时间是duration×N,其中N在0.25~0.5秒之间。从中可见,如何处理这种条件还没有统一样式。

要深入了解这些功能的实际应用,可以参考UNIX POSIX APIISO POSIX Linux Unix标准C函数速查手册。如果你对基于终端的行编辑程序感兴趣,可以查看基于终端的行编辑程序

11.9终端标识

历史沿袭至今,在大多数UNIX系统中,控制终端的名字是/dev/tty。POSIX.1提供了一个运行时函数,可被调用来决定控制终端的名字。


#include <stdio.h>

</stdio.h>