跳到内容

2021 001将getWindowSz函数添加到Posix。TTY结构

John Reppy编辑了这个页面2021年2月11日·4次修订

提案2021-001

添加获取WindowsSz函数到Posix公司。TTY公司结构

作者:约翰·雷皮
上次修订日期:2021年2月6日
状态:提出
讨论: 第30期


Unix系统(和Linux)通常支持国际奥委会系统调用以获取附加到TTY时,文件描述符中的窗口大小。虽然此机制不是POSIX标准的一部分,但在Unix系统,似乎最适合Posix公司。TTY公司结构。

简介

签名POSIX_TTY公司结构Posix公司。文本:POSIX_TTY

接口

val值getWindowSz:file_desc->{nLines:int,nColls:int}选项

描述

  • 获取WindowsSz fd
    收益一些{nLines,nCols}如果文件描述符fd公司已附加到TTY公司支持设备和窗口大小的查询。否则,它收益.

讨论

UNIX接口(在Berkeley UNIX中引入)可以用作跟随:

结构 窗口大小{无符号短  ws_低;无符号短  ws_col公司;无符号短  ws_x像素;无符号短  ws_像素;};整数 获取WindowsSz(整数 fd公司,整数 *n行,整数 *nCols(nCols)){结构 窗口大小 无线传感器网络;整数 标准贯入度 = 国际奥委会(fd公司,TIOCGWINSZ公司,&无线传感器网络);如果(标准贯入度 == 0) {*n行 = 无线传感器网络.ws_低;*nCols(nCols) = 无线传感器网络.ws_col公司;}返回 标准贯入度;}

其他字段ws_x像素ws_像素可以保持窗口尺寸一些系统上的像素,但该功能并不总是受支持的,我们忽略了这些领域。

对于SML公司API,此建议返回每当查询失败时,这可能是因为文件描述符无效,或者不是TTY公司,或者系统不支持该操作。因此,有效的实现可以随时返回.

影响

此添加不应影响现有代码。

理论基础

此机制对于在中实现基于光标的屏幕编辑很有用SML公司(例如,用于REPL中的输入编辑)。它比依赖环境更可靠可以定义(也可以不定义)的变量。

将其添加到POSIX。TTY公司结构看起来很自然,因为它在水平上工作不属于UNIX系统签名(其他可能的位置)。


历史

  • [2021-02-06]提议