我必须不使用forkpty()创建一对新的tty(主服务器和从服务器)。
在pts(4)的人中写道:
当进程打开/ dev / ptmx时,它将获得伪终端主机(PTM)的文件描述符,并且在/ dev / pts目录中创建了伪终端从属(PTS)设备。
用C中的一个小程序,我像这样打开/ dev / ptmx:
open("/dev/ptmx", O_RDWR);
Run Code Online (Sandbox Code Playgroud)
但是/ dev / pts /中没有创建新的pty。
这是关于该主题的一个很好的教程:\xc2\xa0使用伪终端控制交互式程序、 pty、 pdip。如果此链接以错误 403 结束,这里是另一个错误: http: //roucha.fr/tech_corner/pty_pdip.html
\n特别是,请查看页面中间标题 \xe2\x80\x9c 通过伪终端进行进程间通信\xe2\x80\x9d 下的示例源代码。这是一个进程的示例,它派生了 xe2\x80\x91 自身,然后两个进程通过父进程先前打开的 PTY 彼此通信。
\n要实际创建可用的 pty 对,还必须对 open 调用返回的 fd 调用 grantpt(3) 和unlockpt(3)。它没有明确定义在该过程中文件系统中实际从属 pty 文件节点的创建位置 - 某些系统(通常 /dev/pts 是特殊文件系统的系统)将在打开时创建它,而其他系统将创建它它作为 grantpt 或unlockpt 调用的一部分。它也不能保证从属设备将位于 /dev/pts 中——它可能在其他地方——所以您需要调用 ptsname(3) 来找出它在哪里。
调用 posix_openpt(3) 而不是直接打开也可能稍微更便携。
| 归档时间: |
|
| 查看次数: |
2325 次 |
| 最近记录: |