最近在看telnet终端登陆的相关程序,了解到了telnet登陆的进程安排。对照UNIX环境高级编程对其中使用伪终端的部分进行了一些学习。
首先,telnet登陆的典型安排如下:
1.telnet client通过connect连接telnet server
2.telnet server 调用accept接受连接请求,并fork子进程1处理与client之间的连接。同时打开伪终端主设备
3.子进程1再fork子进程调用login,同时打开伪终端从设备
4.login处理完验证等处理后,exec登陆shell
5.登陆shell利用伪终端从设备和子进程1之间进行通信
下面是打开伪终端的代码:
ptym_open用于打开伪终端主设备,并通过参数输出对应的伪终端从设备名称
ptys_open用伪终端从设备名打开从设备
grantpt用于更改从设备的节点的权限为用户读写,组写。
unloc