伪终端并不是真正的硬件终端设备,而是一个应用程序。打开一个终端,输入tty 这个命令来查看当前所使用的终端名:
zhang@zhang-laptop:~$ tty
/dev/pts/1
后面的1意味着已经打开了1个终端窗口。实际上,像上面的 /dev/pts/1是从伪终端,它通过文件 /dev/ptmx 建立。/dev/ptmx 可以建立主从伪终端,当打开该文件时,返回的是主伪终端的文件描述符,同时也会在 /dev/pts/ 目录下建立相应的从伪终端文件,如 /dev/pts/1 , /dev/pts/2 等。更多关于主伪终端和从伪终端的信息可使用 man 4 ptmx 进行查阅。
下面这个程序可以打开两个从伪终端:
#define _XOPEN_SOURCE
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <pty.h>
// pty master
#define PTMASTER "/dev/ptmx"
int main()
{
int amaster, aslave;
char *slavename;
int masterfd;
masterfd = openpty(&amaster, &aslave, NULL, NULL, NULL);
slavename = ptsname(amaster);
printf("pts name : %s\n", slavename);
masterfd