找到使用BSD打开伪终端的免费端口

时间:2015-05-04 02:23:22

标签: c linux serial-port

我想使用BSD API创建一个伪终端。我的理解是Unix 98 API将自动找到一个posix_openpt()的空闲端口,但是使用BSD API我需要检查/找到一个可以连接的空闲端口。这是对的吗?

所以我需要做这样的事情......?

int fd, index = 0;
char serial_port[11]; // = "/dev/ptyp0"

while (true) {
    sprintf(serial_port, "/dev/ptyp%d", index); 
    fd = open(serial_port, O_RDWR | O_NOCTTY | O_NONBLOCK);

    if (fd > 0) 
        break;

    index++;
}

您知道使用BSD的伪终端教程吗?有很多人使用的是Unix 98 API,但是如果有任何BSD API则不多。

1 个答案:

答案 0 :(得分:0)

使用实际的设备路径是有问题的,因为路径名可能因系统而异。很久以前使用伪终端的大多数便携式应用程序都被更改为使用其中一个库函数来抽象远离设备路径。

要考虑不止一种BSD,例如FreeBSD,NetBSD,OpenBSD(当然还有其他一些,包括OSX)。 xterm的配置脚本标识每个功能。所有人都在" util"库,在util.h中提供原型

POSIX提供posix_openpt,它将openpty的功能与其他功能相结合,以提供更简单的界面。但是(虽然是documented接口),但已知它与OSX无法正常工作(例如参见 OSX 10.7.5 UTF-8 encoding over ssh 以及xterm' s changelog )。

以下是联机帮助链接: