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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? klogd.c

?? linux下記錄系統日志代碼以及記錄內核日志代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
               if( *ptr == '%' )   /* dangerous printf marker */	       {		   delta = 0;		   while (len && *ptr == '%')		   {		       *line++ = *ptr++;	/* copy it in */		       space -= 1;		       len   -= 1;		       delta++;		   }		   if (delta % 2)	/* odd amount of %'s */		   {		       if (space)		       {			   *line++ = '%';	/* so simply add one */			   space -= 1;		       }		       else 		       {			   *line++ = '\0';	/* remove the last one / terminate the string */		       }		   }	       }               break;                case PARSING_SYMSTART:               if( *ptr != '<' )               {                  parse_state = PARSING_TEXT;        /* not a symbol */                  break;               }               /*               ** Save this character for now.  If this turns out to               ** be a valid symbol, this char will be replaced later.               ** If not, we'll just leave it there.               */               sym_start = line; /* this will point at the '<' */               *line++ = *ptr++;               space -= 1;               len   -= 1;               parse_state = PARSING_SYMBOL;     /* symbol... */               break;        case PARSING_SYMBOL:               delta = copyin( line, space, ptr, len, ">\n[" );               line  += delta;               ptr   += delta;               space -= delta;               len   -= delta;               if( space == 0 || len == 0 )               {                  break;  /* full line_buff or end of input buffer */               }               if( *ptr != '>' )               {                  parse_state = PARSING_TEXT;                  break;               }               *line++ = *ptr++;  /* copy the '>' */               space -= 1;               len   -= 1;               parse_state = PARSING_SYMEND;               break;        case PARSING_SYMEND:               if( *ptr != ']' )               {                  parse_state = PARSING_TEXT;        /* not a symbol */                  break;               }               /*               ** It's really a symbol!  Replace address with the               ** symbol text.               */           {	       auto int sym_space;	       unsigned long value;	       auto struct symbol sym;	       auto char *symbol;               *(line-1) = 0;    /* null terminate the address string */               value  = strtoul(sym_start+1, (char **) 0, 16);               *(line-1) = '>';  /* put back delim */               symbol = LookupSymbol(value, &sym);               if ( !symbol_lookup || symbol == (char *) 0 )               {                  parse_state = PARSING_TEXT;                  break;               }               /*               ** verify there is room in the line buffer               */               sym_space = space + ( line - sym_start );               if( sym_space < strlen(symbol) + 30 ) /*(30 should be overkill)*/               {                  parse_state = PARSING_TEXT;  /* not enough space */                  break;               }               delta = sprintf( sym_start, "%s+%d/%d]",                                symbol, sym.offset, sym.size );               space = sym_space + delta;               line  = sym_start + delta;	       symbols_expanded = 1;           }               ptr++;               len--;               parse_state = PARSING_TEXT;               break;        default: /* Can't get here! */               parse_state = PARSING_TEXT;        }    }    return;}static void LogKernelLine(void){	auto int rdcnt;	/*	 * Zero-fill the log buffer.  This should cure a multitude of	 * problems with klogd logging the tail end of the message buffer	 * which will contain old messages.  Then read the kernel log	 * messages into this fresh buffer.	 */	memset(log_buffer, '\0', sizeof(log_buffer));	if ( (rdcnt = ksyslog(2, log_buffer, sizeof(log_buffer))) < 0 )	{		if ( errno == EINTR )			return;		fprintf(stderr, "klogd: Error return from sys_sycall: " \			"%d - %s\n", errno, strerror(errno));	}	else		LogLine(log_buffer, rdcnt);	return;}static void LogProcLine(void){	auto int rdcnt;	/*	 * Zero-fill the log buffer.  This should cure a multitude of	 * problems with klogd logging the tail end of the message buffer	 * which will contain old messages.  Then read the kernel messages	 * from the message pseudo-file into this fresh buffer.	 */	memset(log_buffer, '\0', sizeof(log_buffer));	if ( (rdcnt = read(kmsg, log_buffer, sizeof(log_buffer)-1)) < 0 )	{		if ( errno == EINTR )			return;		Syslog(LOG_ERR, "Cannot read proc file system: %d - %s.", \		       errno, strerror(errno));	}	else		LogLine(log_buffer, rdcnt);	return;}int main(argc, argv)	int argc;	char *argv[];{	auto int	ch,			use_output = 0;	auto char	*log_level = (char *) 0,			*output = (char *) 0;#ifndef TESTING	chdir ("/");#endif	/* Parse the command-line. */	while ((ch = getopt(argc, argv, "c:df:iIk:nopsvx2")) != EOF)		switch((char)ch)		{		    case '2':		/* Print lines with symbols twice. */			symbols_twice = 1;			break;		    case 'c':		/* Set console message level. */			log_level = optarg;			break;		    case 'd':		/* Activity debug mode. */			debugging = 1;			break;		    case 'f':		/* Define an output file. */			output = optarg;			use_output++;			break;		    case 'i':		/* Reload module symbols. */			SignalDaemon(SIGUSR1);			return(0);		    case 'I':			SignalDaemon(SIGUSR2);			return(0);		    case 'k':		/* Kernel symbol file. */			symfile = optarg;			break;		    case 'n':		/* don't fork */			no_fork++;			break;		    case 'o':		/* One-shot mode. */			one_shot = 1;			break;		    case 'p':			SetParanoiaLevel(1);	/* Load symbols on oops. */			break;			    case 's':		/* Use syscall interface. */			use_syscall = 1;			break;		    case 'v':			printf("klogd %s.%s\n", VERSION, PATCHLEVEL);			exit (1);		    case 'x':			symbol_lookup = 0;			break;		}	/* Set console logging level. */	if ( log_level != (char *) 0 )	{		if ( (strlen(log_level) > 1) || \		     (strchr("12345678", *log_level) == (char *) 0) )		{			fprintf(stderr, "klogd: Invalid console logging "				"level <%s> specified.\n", log_level);			return(1);		}		console_log_level = *log_level - '0';	}		#ifndef TESTING	/*	 * The following code allows klogd to auto-background itself.	 * What happens is that the program forks and the parent quits.	 * The child closes all its open file descriptors, and issues a	 * call to setsid to establish itself as an independent session	 * immune from control signals.	 *	 * fork() is only called if it should run in daemon mode, fork is	 * not disabled with the command line argument and there's no	 * such process running.	 */	if ( (!one_shot) && (!no_fork) )	{		if (!check_pid(PidFile))		{			if ( fork() == 0 )			{				auto int fl;				int num_fds = getdtablesize();						/* This is the child closing its file descriptors. */				for (fl= 0; fl <= num_fds; ++fl)				{					if ( fileno(stdout) == fl && use_output )						if ( strcmp(output, "-") == 0 )							continue;					close(fl);				} 				setsid();			}			else				exit(0);		}		else		{			fputs("klogd: Already running.\n", stderr);			exit(1);		}	}	/* tuck my process id away */	if (!check_pid(PidFile))	{		if (!write_pid(PidFile))			Terminate();	}	else	{		fputs("klogd: Already running.\n", stderr);		Terminate();	}#endif		/* Signal setups. */	for (ch= 1; ch < NSIG; ++ch)		signal(ch, SIG_IGN);	signal(SIGINT, stop_daemon);	signal(SIGKILL, stop_daemon);	signal(SIGTERM, stop_daemon);	signal(SIGHUP, stop_daemon);	signal(SIGTSTP, stop_logging);	signal(SIGCONT, restart);	signal(SIGUSR1, reload_daemon);	signal(SIGUSR2, reload_daemon);	/* Open outputs. */	if ( use_output )	{		if ( strcmp(output, "-") == 0 )			output_file = stdout;		else if ( (output_file = fopen(output, "w")) == (FILE *) 0 )		{			fprintf(stderr, "klogd: Cannot open output file " \				"%s - %s\n", output, strerror(errno));			return(1);		}	}	else		openlog("kernel", 0, LOG_KERN);	/* Handle one-shot logging. */	if ( one_shot )	{		if (symbol_lookup) {			InitKsyms(symfile);			InitMsyms();		}		if ( (logsrc = GetKernelLogSrc()) == kernel )			LogKernelLine();		else			LogProcLine();		Terminate();	}	/* Determine where kernel logging information is to come from. */#if defined(KLOGD_DELAY)	sleep(KLOGD_DELAY);#endif	logsrc = GetKernelLogSrc();	if (symbol_lookup) {		InitKsyms(symfile);		InitMsyms();	}        /* The main loop. */	while (1)	{		if ( change_state )			ChangeLogging();		switch ( logsrc )		{			case kernel:	  			LogKernelLine();				break;			case proc:				LogProcLine();				break;		        case none:				pause();				break;		}	}}/* * Local variables: *  c-indent-level: 8 *  c-basic-offset: 8 *  tab-width: 8 * End: */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区在线看| 99久久久精品| 色欲综合视频天天天| 日韩欧美在线1卡| 亚洲线精品一区二区三区八戒| 激情深爱一区二区| 欧美区视频在线观看| 一色桃子久久精品亚洲| 国产一区二区视频在线| 91麻豆精品国产91久久久久| 亚洲精品一二三区| 处破女av一区二区| 国产午夜精品一区二区三区视频| 午夜不卡在线视频| 在线一区二区视频| 亚洲欧美电影一区二区| 高清视频一区二区| 国产三级精品三级| 国产麻豆成人精品| 日韩欧美一区二区三区在线| 亚洲小说欧美激情另类| 欧美性一二三区| 一区二区三区在线视频免费| www.日本不卡| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 26uuu国产一区二区三区| 舔着乳尖日韩一区| 欧美军同video69gay| 天天综合色天天综合色h| 欧美性感一类影片在线播放| 亚洲免费观看高清| 在线视频亚洲一区| 亚洲一区二区成人在线观看| 91欧美一区二区| 一区二区三区在线影院| 欧美日韩视频专区在线播放| 亚洲成人自拍一区| 欧美美女一区二区三区| 大白屁股一区二区视频| 国产午夜精品一区二区三区视频| 国产69精品久久777的优势| 日本一区二区电影| 91一区二区在线观看| 一区二区三区欧美视频| 欧美精品在线一区二区| 麻豆国产精品一区二区三区| 久久精品视频一区| 91在线观看下载| 午夜精品视频一区| 日韩三级在线观看| av成人免费在线| 午夜精品福利视频网站| 精品久久一区二区| 成人黄色在线看| 亚洲高清视频的网址| 精品少妇一区二区三区在线播放| 国产精品中文有码| 亚洲精选在线视频| 精品电影一区二区| 99久久久久久99| 奇米777欧美一区二区| 国产亚洲一区二区三区四区| 色狠狠色噜噜噜综合网| 秋霞成人午夜伦在线观看| 日本一区二区三区免费乱视频| 色综合色狠狠综合色| 久久国内精品视频| 亚洲天堂精品视频| 精品人伦一区二区色婷婷| 91视频国产观看| 精品一区二区久久久| 亚洲区小说区图片区qvod| 日韩欧美一级二级| 在线观看不卡视频| 国产成人精品亚洲午夜麻豆| 午夜激情综合网| 1024成人网色www| 久久夜色精品国产欧美乱极品| 色又黄又爽网站www久久| 国产一区二区三区四区五区美女 | av一区二区不卡| 日本免费在线视频不卡一不卡二| 国产精品久久久久久久久免费相片| 在线观看91av| 色婷婷久久99综合精品jk白丝| 国内精品国产成人| 全国精品久久少妇| 一区二区免费在线| 中文字幕中文字幕中文字幕亚洲无线 | 成人在线综合网站| 美女www一区二区| 一区二区三区**美女毛片| 日本一二三不卡| 亚洲精品在线三区| 日韩欧美综合在线| 欧美色欧美亚洲另类二区| 成人黄色片在线观看| 极品少妇xxxx精品少妇偷拍| 视频一区视频二区中文| 亚洲一区二区三区四区在线免费观看| 欧美极品xxx| 久久精品亚洲国产奇米99| 日韩视频免费观看高清完整版在线观看 | 一卡二卡欧美日韩| 欧美国产97人人爽人人喊| 久久精品一区二区三区不卡牛牛| 日韩一二三区视频| 91麻豆精品国产91久久久更新时间 | 久久精品视频网| 26uuu国产日韩综合| 精品噜噜噜噜久久久久久久久试看| 欧美伦理电影网| 91精品国产黑色紧身裤美女| 欧美高清视频www夜色资源网| 欧洲av在线精品| 欧美日韩在线播放| 777欧美精品| 欧美电影精品一区二区| 精品国产一区二区三区久久影院 | 综合欧美亚洲日本| 亚洲免费观看在线观看| 一区二区高清在线| 亚洲午夜免费视频| 欧美aaa在线| 国产精品一二三四区| 成人性视频网站| 97精品超碰一区二区三区| 91浏览器在线视频| 欧美挠脚心视频网站| 欧美变态tickling挠脚心| 久久久久国产精品厨房| 亚洲欧美色一区| 亚洲成人黄色小说| 免费人成黄页网站在线一区二区| 久久精品国产一区二区| 高清国产一区二区| 欧美在线观看一二区| 日韩精品一区二区三区视频在线观看 | 久久99久久99| 国产成人免费9x9x人网站视频| 波多野结衣中文一区| 欧美三级视频在线| 精品区一区二区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产伦精一区二区三区| av在线不卡网| 欧美一区二区免费观在线| 欧美激情在线看| 亚洲一区二区三区在线看| 激情偷乱视频一区二区三区| 色域天天综合网| 久久综合成人精品亚洲另类欧美| 国产精品久久久久天堂| 奇米色一区二区| 色婷婷精品大视频在线蜜桃视频 | 精品亚洲欧美一区| 91蜜桃在线免费视频| 日韩精品一区二区三区四区视频| 综合色中文字幕| 国产精品综合一区二区三区| 欧美日韩国产一级| 中文字幕亚洲精品在线观看| 青青草国产成人av片免费| 97成人超碰视| 国产午夜亚洲精品午夜鲁丝片| 亚洲成人在线观看视频| 99这里只有精品| 精品国精品国产尤物美女| 亚洲成a天堂v人片| 97久久久精品综合88久久| 精品电影一区二区三区| 日本不卡一区二区三区| 日本韩国视频一区二区| 国产色爱av资源综合区| 免费成人在线播放| 欧美日韩精品一区二区天天拍小说 | 青青国产91久久久久久| 色婷婷国产精品| 中文字幕在线观看一区二区| 国产乱子伦一区二区三区国色天香 | 国产欧美精品一区aⅴ影院 | 久久久久久毛片| 久久精品国产久精国产| 欧美一级高清片| 亚洲3atv精品一区二区三区| 在线免费精品视频| 亚洲乱码精品一二三四区日韩在线| 国产.精品.日韩.另类.中文.在线.播放 | 美女免费视频一区二区| 欧美男生操女生| 日韩二区三区四区| 91精品欧美福利在线观看| 午夜一区二区三区在线观看| 99久久久免费精品国产一区二区 | 久久久久久电影| 国产一区三区三区| 2020国产精品自拍| 国产精品77777| 国产精品全国免费观看高清| 国产精品1区2区3区在线观看|