⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 term.c

📁 操作系统源代码
💻 C
字号:
/* * TNET		A server program for MINIX which implements the TCP/IP *		suite of networking protocols.  It is based on the *		TCP/IP code written by Phil Karn et al, as found in *		his NET package for Packet Radio communications. * *		Handle the TERMINAL module. * * Author:	Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org> *              Michael Temari, <temari@temari.ae.ge.com> * * 07/29/92 MT  Telnet options hack which seems to work okay * 01/12/93 MT  Better telnet options processing instead of hack */#include <sys/types.h>#include <errno.h>#if 0#include <fcntl.h>#endif#include <stdlib.h>#include <unistd.h>#include <string.h>#include <stdio.h>#include <signal.h>#include "telnet.h"#include "telnetd.h"_PROTOTYPE(void sig_done, (int sig));static char buff[4096];void term_init(){  tel_init();  telopt(1, WILL, TELOPT_SGA);  telopt(1, DO,   TELOPT_SGA);  telopt(1, WILL, TELOPT_BINARY);  telopt(1, DO,   TELOPT_BINARY);  telopt(1, WILL, TELOPT_ECHO);}static int io_done = 0;void term_inout(pty_fd)int pty_fd;{register int i;pid_t pid;struct sigaction sa;  sigemptyset(&sa.sa_mask);  sa.sa_flags = 0;  sa.sa_handler = sig_done;  sigaction(SIGALRM, &sa, (struct sigaction *) NULL);  if ((pid = fork()) == -1) {	sprintf(buff, "telnetd: fork() failed: %s\r\n", strerror(errno));	(void) write(1, buff, strlen(buff));  }  if (pid != 0) {	/* network -> login process */	while (!io_done && (i = read(0, buff, sizeof(buff))) > 0) {		tel_in(pty_fd, 1, buff, i);	}	/* EOF, kill opposite number and exit. */	(void) kill(pid, SIGKILL);  } else {  	/* login process -> network */	while ((i = read(pty_fd, buff, sizeof(buff))) > 0) {		tel_out(1, buff, i);	}	/* EOF, alert opposite number and exit. */	(void) kill(getppid(), SIGALRM);  }  /* EOF. */}void sig_done(sig)int sig;{  io_done = 1;  alarm(1);			/* there is always a chance... */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -