亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ipc.c

?? linux 下的超級(jí)終端 minicom
?? C
字號(hào):
/* * ipc.c	talk to the keyserv process. * *		Entry point: * *		keyserv(command, arg) *		command can be KINSTALL, KUNINSTALL, or a command for keyserv. *		arg is a 1 byte argument. * *		This file is part of the minicom communications package, *		Copyright 1991-1995 Miquel van Smoorenburg. * *		This program is free software; you can redistribute it and/or *		modify it under the terms of the GNU General Public License *		as published by the Free Software Foundation; either version *		2 of the License, or (at your option) any later version. */#ifdef HAVE_CONFIG_H#include <config.h>#endif#include "rcsid.h"RCSID("$Id: ipc.c,v 1.6 2003/04/19 16:31:27 al-guest Exp $")#include <strings.h>#include "port.h"#include "minicom.h"#include "intl.h"#ifndef HAVE_SELECTstatic int tokeyserv, fromkeyserv;	/* File desciptors of ipc pipes */static int keypid;			/* pid of keyserv  		*/static jmp_buf ackjmp;			/* To jump to after ACK signal  */static int waiting = 0;			/* Do we expect an ACK signal?	*/static int keypress = -1;		/* A key was pressed.		*//* * We got the "ksigio" signal. This means that CTRL-A was pressed in * the main terminal loop, or any key if requested by keyserv(KSIGIO). *//*ARGSUSED*/static void ksigio(dummy)int dummy;{  unsigned char c[8];  int n;  signal(HELLO, ksigio);  while ((n = read(fromkeyserv, c, 8)) < 0 && errno == EINTR)  	errno = 0;  keypress = n ? c[n - 1] : -1;}/* * After we have sent a signal to "keyserv", we wait for it to signal * us back. Otherwise "keyserv" would be swamped with signals and * die ungracefully.... */static void sigack(dummy)int dummy;{  signal(ACK, sigack);  if (waiting) longjmp(ackjmp, 1);  printf(_("sigack: unexpected ACK signal &^%%$!! (pardon my French)%c\n"),	   '\r');}/* * Install the keyserv process. This involves setting up the communications * channels (pipes) and forking the child process. */static void kinstall(){  char mpid[8];  int pipe1[2], pipe2[2];  char buf[2];  char prog[128];  if (pipe(pipe1) < 0 || pipe(pipe2) < 0)  	leave(_("minicom: out of file descriptors\n"));  tokeyserv = pipe1[1];  fromkeyserv = pipe2[0];  /* Set signal handler */  signal(HELLO, ksigio);  signal(ACK, sigack);  sprintf(mpid, "%d", (int)getpid());  switch(keypid = fork()) {  	case -1:  		leave(_("minicom: could not fork.\n"));  		break;  	case 0: /* Child */  		/* Set up fd #1 : stdout */  		dup2(portfd, 1);  		close(portfd);		/* Set up fd #3 : minicom ---> keyserv */		dup2(pipe1[0], 3);		/* Set up fd #4 : minicom <--- keyserv */		dup2(pipe2[1], 4);		/* Close unused file descriptors */		close(pipe1[1]);		close(pipe2[0]);		snprintf(prog, sizeof(prog), "%s/keyserv", CONFDIR);  		execl(prog, "keyserv", mpid, (char *)NULL);  		exit(0);  	default: /* Parent */		if (setjmp(ackjmp) == 0) {#ifdef DEBUG			printf("keyserv has PID %d\r\n", keypid);#endif  			sleep(2); /* Wait for keyserv to initialize */			waiting = 1;  			buf[0] = KSTOP;  			write(tokeyserv, buf, 2);  			if (kill(keypid, HELLO) < 0) {  				leave(_("minicom: could not exec keyserv\n"));  			}			/* Do nothing 'till ACK signal */			while(1) pause();		}		waiting = 0;		/* close unused pipes */		close(pipe1[0]);		close(pipe2[1]);		break;  }}/* * Install / tell /de-install "keyserv" program. */int keyboard(cmd, arg)int cmd, arg;{  char ch[2];  int pid, stt;  static int lastcmd = -1;  int c;  lastcmd = cmd;  if (cmd == KINSTALL) {  	kinstall();  	return(0);  }  if (cmd == KUNINSTALL) {	close(fromkeyserv);	close(tokeyserv);	(void) kill(keypid, SIGKILL);	pid = m_wait(&stt);	keypid = 0;	return(0);  }  if (cmd == KGETKEY) {	if (keypress >= 0)		/* Return the command key from keyserv. */		c = keypress;	else {		/* Just read it. */		read(0, ch, 1);		c = ch[0];	}	keypress = -1;	return(c);  }  if (cmd == KSETESC) {	/* Store this because the code expects it. */	escape = arg;  }  /* Do nothing if keyserv doesn't run yet. */  if (keypid == 0) return(0);  if (setjmp(ackjmp) == 0) {	waiting = 1;	ch[0] = cmd;	ch[1] = arg;	write(tokeyserv, ch, 2);	(void) kill(keypid, HELLO);	/* Do nothing 'till ACK signal */	while(1) pause();  }  waiting = 0;  return(0);}/* Dummy function, e.g. sigalarm handler. */void empty_function(){}/* Wait for I/O to happen. We might get interrupted by keyserv. * * Socket-mode: If reading fd1 fails and fd1 is our portfd and it's the *              socket, the socket is closed. */int check_io(fd1, fd2, tmout, buf, buflen)int fd1;int fd2;int tmout;char *buf;int *buflen;{  int n;  int x = 0;  /* OK, set the alarm if needed. */  signal(SIGALRM, empty_function);  if (tmout) alarm((tmout + 500) / 1000);  /* We do a read on the first fd, the second one is always stdin. */  if (keypress < 0) {	if (fd1 >= 0) {		/* Read gets interrupted by keypress or alarm. */		n = read(fd1, buf, 127);#ifdef USE_SOCKET		if (!n && portfd_is_socket && portfd == fd1)			term_socket_close();#endif /* USE_SOCKET */		buf[n > 0 ? n : 0] = 0;		if (buflen) *buflen = n;		if (n > 0) x |= 1;	} else		/* Wait for keypress or alarm. */		pause();  }  alarm(0);  if (keypress >= 0) x |= 2;  return(x);}#else /* HAVE_SELECT *//* Check if there is IO pending. */int check_io(fd1, fd2, tmout, buf, buflen)int fd1;int fd2;int tmout;char *buf;int *buflen;{  int n = 0, i;  struct timeval tv;  fd_set fds;  extern int io_pending; /* wkeys.c */  tv.tv_sec = tmout / 1000;  tv.tv_usec = (tmout % 1000) * 1000L;  i = fd1;  if (fd2 > fd1) i = fd2;  FD_ZERO(&fds);  if (fd1 >= 0) FD_SET(fd1, &fds); else fd1 = 0;  if (fd2 >= 0) FD_SET(fd2, &fds); else fd2 = 0;  if (fd2 == 0 && io_pending)	n = 2;  else if (select(i+1, &fds, NULL, NULL, &tv) > 0)	n = 1 * (FD_ISSET(fd1, &fds) > 0) + 2 * (FD_ISSET(fd2, &fds) > 0);  /* If there is data put it in the buffer. */  if (buf) {	i = 0;	if ((n & 1) == 1) {		i = read(fd1, buf, 127);#ifdef USE_SOCKET		if (!i && portfd_is_socket && portfd == fd1)			term_socket_close();#endif /* USE_SOCKET */	}	buf[i > 0 ? i : 0] = 0;	if (buflen) *buflen = i;  }  return(n);}int keyboard(cmd, arg)int cmd, arg;{  switch(cmd) {		case KSTART:	case KSTOP:		break;	case KSIGIO:		break;	case KGETKEY:		return(wxgetch());	case KSETESC:		escape = arg;		break;	case KSETBS:		vt_set(-1, -1, NULL, -1, arg, -1, -1, -1);		break;	case KCURST:		vt_set(-1, -1, NULL, -1, -1, -1, NORMAL, -1);		break;	case KCURAPP:		vt_set(-1, -1, NULL, -1, -1, -1, APPL, -1);		break;	default:		/* The rest is only meaningful if a keyserv runs. */		break;  }  return(0);}#endif /* HAVE_SELECT */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲区小说区图片区qvod| 99在线视频精品| 欧美精品高清视频| 亚洲影院免费观看| 日本乱人伦aⅴ精品| 国产视频911| 国产精品一区二区在线播放| 欧美精品一区二区三区在线| 午夜精品久久久久久久蜜桃app| 在线观看不卡一区| 亚洲v中文字幕| 欧美在线|欧美| 天天综合色天天| 7777精品伊人久久久大香线蕉超级流畅 | 欧美亚洲国产一区二区三区| 久久久精品免费免费| 国产一区二区三区日韩 | 韩国一区二区三区| 精品久久久久久久久久久久久久久 | 欧美久久久久久久久中文字幕| 亚洲一区二区精品久久av| 在线亚洲欧美专区二区| 亚洲丰满少妇videoshd| 欧美精品vⅰdeose4hd| 另类小说色综合网站| 欧美一区二区三区四区视频| 日本成人在线网站| 国产日韩影视精品| 欧美系列日韩一区| 国产成人av自拍| 亚洲国产欧美在线| 久久久不卡影院| 欧美日韩一级二级三级| 粉嫩一区二区三区性色av| 亚洲va中文字幕| 国产精品嫩草影院av蜜臀| 欧美精品九九99久久| 成年人网站91| 久久99久国产精品黄毛片色诱| 亚洲欧美综合另类在线卡通| 欧美一级片在线| 91久久精品一区二区三| 国产精品自在欧美一区| 亚洲成av人片| 亚洲男同1069视频| 久久久久久电影| 欧美一区二区三区影视| 日本精品裸体写真集在线观看| 国产精品99久久久久久似苏梦涵| 亚洲国产精品视频| 亚洲天堂av老司机| 中文字幕免费不卡| 2020国产成人综合网| 欧美人体做爰大胆视频| 91麻豆国产福利在线观看| 国产精品99久久久久| 精品在线观看视频| 五月天久久比比资源色| 亚洲高清视频在线| 一区二区三区四区在线播放| 国产精品午夜久久| 国产午夜亚洲精品不卡| 91精品国产综合久久久蜜臀粉嫩 | 日韩制服丝袜先锋影音| 国产精品乱码一区二三区小蝌蚪| 久久亚洲综合色一区二区三区 | 激情文学综合网| 无码av免费一区二区三区试看| 亚洲欧洲韩国日本视频| 国产精品久线在线观看| 国产日韩欧美a| 欧美韩国日本一区| 国产精品视频yy9299一区| 久久久久99精品一区| 欧美tickling挠脚心丨vk| 日韩一区国产二区欧美三区| 91精品久久久久久久91蜜桃| 884aa四虎影成人精品一区| 欧美在线播放高清精品| 欧美日韩精品一区视频| 欧美日韩免费一区二区三区 | 91蜜桃视频在线| 97精品视频在线观看自产线路二| 成人av电影在线网| 在线观看亚洲精品视频| 在线精品视频一区二区三四| 欧美亚洲尤物久久| 欧美日韩国产欧美日美国产精品| 91精品国产综合久久久久久久久久 | 蜜臀99久久精品久久久久久软件| 丝袜美腿亚洲一区二区图片| 日韩在线一区二区| 九九精品一区二区| 东方aⅴ免费观看久久av| 不卡的av网站| 欧美婷婷六月丁香综合色| 欧美一区二区三区四区在线观看| 日韩精品一区二区在线| 久久精品人人爽人人爽| 亚洲天堂免费在线观看视频| 亚洲成人一区二区在线观看| 蜜臀久久久久久久| 成人看片黄a免费看在线| 91免费国产视频网站| 欧美精品18+| 久久久亚洲精华液精华液精华液 | 久久综合色一综合色88| 国产日韩亚洲欧美综合| 亚洲一本大道在线| 久久精品国产亚洲5555| 成人福利视频在线| 欧美喷潮久久久xxxxx| 久久久久久久性| 一区二区在线观看免费| 美女爽到高潮91| 99久久精品免费看国产| 在线不卡a资源高清| 国产午夜精品久久久久久免费视| 伊人婷婷欧美激情| 国产一区二区导航在线播放| av男人天堂一区| 91精品国产入口在线| 综合久久久久久久| 麻豆高清免费国产一区| 色综合色综合色综合| 久久久久久久久久久黄色| 亚洲线精品一区二区三区| 韩日av一区二区| 7777精品伊人久久久大香线蕉的 | 99久久er热在这里只有精品15| 在线免费不卡电影| 久久久91精品国产一区二区三区| 亚洲18影院在线观看| 成人中文字幕合集| 精品欧美一区二区在线观看| 亚洲黄色av一区| 国产精品亚洲а∨天堂免在线| 欧美美女视频在线观看| 日韩美女一区二区三区| 亚洲国产wwwccc36天堂| 日韩一区二区在线看片| 最近日韩中文字幕| 国产精品99久久久久久久vr| 日韩亚洲电影在线| 亚洲无人区一区| 9l国产精品久久久久麻豆| 久久美女艺术照精彩视频福利播放 | 韩国v欧美v亚洲v日本v| 欧美日韩在线播放一区| 亚洲国产成人在线| 国产精品91xxx| 日韩亚洲欧美一区| 日本不卡123| 欧美久久久影院| 亚洲电影一区二区| 色诱亚洲精品久久久久久| 国产免费成人在线视频| 精品亚洲成av人在线观看| 91精品国产综合久久久久| 亚洲一区免费观看| 在线影视一区二区三区| 中文字幕日韩一区二区| 成人国产精品免费观看动漫| 欧美韩国日本不卡| 成人影视亚洲图片在线| 国产目拍亚洲精品99久久精品| 国产一区二区三区四区五区入口 | 狠狠色综合日日| 26uuu久久综合| 国内精品伊人久久久久av一坑| 日韩视频123| 精品一区二区免费在线观看| 亚洲精品一区二区三区影院| 国产自产高清不卡| 国产亚洲一区二区三区四区| 丁香婷婷综合激情五月色| 国产视频一区二区在线| 国产aⅴ综合色| 综合亚洲深深色噜噜狠狠网站| 91啪亚洲精品| 亚洲午夜久久久久中文字幕久| 欧美色爱综合网| 另类调教123区| 日本一区二区三区国色天香| eeuss鲁一区二区三区| 亚洲视频一二三区| 欧美日韩黄色一区二区| 美日韩一级片在线观看| 国产女主播在线一区二区| 91浏览器入口在线观看| 亚洲成人资源网| 精品日韩成人av| 成人午夜短视频| 亚洲一区二区在线观看视频| 7777精品久久久大香线蕉| 国产真实精品久久二三区| 国产精品黄色在线观看| 欧美日韩国产综合一区二区三区| 久久综合综合久久综合| 国产精品天天看|