您必须编写一些代码来将数据从套接字传输到主 pty,反之亦然。这通常是父进程的工作。请注意,数据传输必须是双向的。有很多选项: select() 驱动的循环来跟踪 masterfd 和 socketfd
(正如提示,非常糟糕的代码,不适合生产!缺少错误和 eof 检查!!!)
for (;;) {
FD_ZERO(&set);
FD_SET(masterfd,&set);
FD_SET(socketfd,&set);
select(...,&set,...);
if (FD_ISSET(masterfd,&set)) {
read(masterfd,&c,1);
write(socketfd,&c,1);
}
if (FD_ISSET(sockerfd,&set)) {
read(sochetfd,&c,1);
write(masterfd,&c,1);
}
或一对线程,一个用于socketfd->masterfd,一个用于masterfd->sockefd 传输。
(正如提示,非常糟糕的代码,不适合生产!!!)
/*thread 1 */
while (read(masterfd,&c,1) > 0)
write(socketfd,&c,1);
/*thread 2 */
while (read(socketfd,&c,1) > 0)
write(masterfdfd,&c,1);
无论如何,您必须在分支的父端添加一些代码。
Regards
- -编辑 - -
当然,你一定不能在子进程中将fd 0,1和2重定向到socketfd。