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

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

?? watch.c

?? linux下獲取一些環境信息的代碼
?? C
字號:
/* watch -- execute a program repeatedly, displaying output fullscreen * * Based on the original 1991 'watch' by Tony Rems <rembo@unisoft.com> * (with mods and corrections by Francois Pinard). * * Substantially reworked, new features (differences option, SIGWINCH * handling, unlimited command length, long line handling) added Apr 1999 by * Mike Coleman <mkc@acm.org>. * * Changes by Albert Cahalan, 2002-2003. */#define VERSION "0.2.0"#include <ctype.h>#include <getopt.h>#include <signal.h>#include <ncurses.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/ioctl.h>#include <time.h>#include <unistd.h>#include <termios.h>#include <locale.h>#include "proc/procps.h"#ifdef FORCE_8BIT#undef isprint#define isprint(x) ( (x>=' '&&x<='~') || (x>=0xa0) )#endifstatic struct option longopts[] = {	{"differences", optional_argument, 0, 'd'},	{"help", no_argument, 0, 'h'},	{"interval", required_argument, 0, 'n'},	{"no-title", no_argument, 0, 't'},	{"version", no_argument, 0, 'v'},	{0, 0, 0, 0}};static char usage[] =    "Usage: %s [-dhntv] [--differences[=cumulative]] [--help] [--interval=<n>] [--no-title] [--version] <command>\n";static char *progname;static int curses_started = 0;static int height = 24, width = 80;static int screen_size_changed = 0;static int first_screen = 1;static int show_title = 2;  // number of lines used, 2 or 0#define min(x,y) ((x) > (y) ? (y) : (x))static void do_usage(void) NORETURN;static void do_usage(void){	fprintf(stderr, usage, progname);	exit(1);}static void do_exit(int status) NORETURN;static void do_exit(int status){	if (curses_started)		endwin();	exit(status);}/* signal handler */static void die(int notused) NORETURN;static void die(int notused){	(void) notused;	do_exit(0);}static voidwinch_handler(int notused){	(void) notused;	screen_size_changed = 1;}static char env_col_buf[24];static char env_row_buf[24];static int incoming_cols;static int incoming_rows;static voidget_terminal_size(void){	struct winsize w;	if(!incoming_cols){  // have we checked COLUMNS?		const char *s = getenv("COLUMNS");		incoming_cols = -1;		if(s && *s){			long t;			char *endptr;			t = strtol(s, &endptr, 0);			if(!*endptr && (t>0) && (t<(long)666)) incoming_cols = (int)t;			width = incoming_cols;			snprintf(env_col_buf, sizeof env_col_buf, "COLUMNS=%d", width);			putenv(env_col_buf);		}	}	if(!incoming_rows){  // have we checked LINES?		const char *s = getenv("LINES");		incoming_rows = -1;		if(s && *s){			long t;			char *endptr;			t = strtol(s, &endptr, 0);			if(!*endptr && (t>0) && (t<(long)666)) incoming_rows = (int)t;			height = incoming_rows;			snprintf(env_row_buf, sizeof env_row_buf, "LINES=%d", height);			putenv(env_row_buf);		}	}	if (incoming_cols<0 || incoming_rows<0){		if (ioctl(2, TIOCGWINSZ, &w) == 0) {			if (incoming_rows<0 && w.ws_row > 0){				height = w.ws_row;				snprintf(env_row_buf, sizeof env_row_buf, "LINES=%d", height);				putenv(env_row_buf);			}			if (incoming_cols<0 && w.ws_col > 0){				width = w.ws_col;				snprintf(env_col_buf, sizeof env_col_buf, "COLUMNS=%d", width);				putenv(env_col_buf);			}		}	}}intmain(int argc, char *argv[]){	int optc;	int option_differences = 0,	    option_differences_cumulative = 0,	    option_help = 0, option_version = 0;	double interval = 2;	char *command;	int command_length = 0;	/* not including final \0 */	setlocale(LC_ALL, "");	progname = argv[0];	while ((optc = getopt_long(argc, argv, "+d::hn:vt", longopts, (int *) 0))	       != EOF) {		switch (optc) {		case 'd':			option_differences = 1;			if (optarg)				option_differences_cumulative = 1;			break;		case 'h':			option_help = 1;			break;		case 't':			show_title = 0;			break;		case 'n':			{				char *str;				interval = strtod(optarg, &str);				if (!*optarg || *str)					do_usage();				if(interval < 0.1)					interval = 0.1;				if(interval > ~0u/1000000)					interval = ~0u/1000000;			}			break;		case 'v':			option_version = 1;			break;		default:			do_usage();			break;		}	}	if (option_version) {		fprintf(stderr, "%s\n", VERSION);		if (!option_help)			exit(0);	}	if (option_help) {		fprintf(stderr, usage, progname);		fputs("  -d, --differences[=cumulative]\thighlight changes between updates\n", stderr);		fputs("\t\t(cumulative means highlighting is cumulative)\n", stderr);		fputs("  -h, --help\t\t\t\tprint a summary of the options\n", stderr);		fputs("  -n, --interval=<seconds>\t\tseconds to wait between updates\n", stderr);		fputs("  -v, --version\t\t\t\tprint the version number\n", stderr);		fputs("  -t, --no-title\t\t\tturns off showing the header\n", stderr);		exit(0);	}	if (optind >= argc)		do_usage();	command = strdup(argv[optind++]);	command_length = strlen(command);	for (; optind < argc; optind++) {		char *endp;		int s = strlen(argv[optind]);		command = realloc(command, command_length + s + 2);	/* space and \0 */		endp = command + command_length;		*endp = ' ';		memcpy(endp + 1, argv[optind], s);		command_length += 1 + s;	/* space then string length */		command[command_length] = '\0';	}	get_terminal_size();	/* Catch keyboard interrupts so we can put tty back in a sane state.  */	signal(SIGINT, die);	signal(SIGTERM, die);	signal(SIGHUP, die);	signal(SIGWINCH, winch_handler);	/* Set up tty for curses use.  */	curses_started = 1;	initscr();	nonl();	noecho();	cbreak();	for (;;) {		time_t t = time(NULL);		char *ts = ctime(&t);		int tsl = strlen(ts);		char *header;		FILE *p;		int x, y;		int oldeolseen = 1;		if (screen_size_changed) {			get_terminal_size();			resizeterm(height, width);			clear();			/* redrawwin(stdscr); */			screen_size_changed = 0;			first_screen = 1;		}		if (show_title) {			// left justify interval and command,			// right justify time, clipping all to fit window width			asprintf(&header, "Every %.1fs: %.*s",				interval, min(width - 1, command_length), command);			mvaddstr(0, 0, header);			if (strlen(header) > (size_t) (width - tsl - 1))				mvaddstr(0, width - tsl - 4, "...  ");			mvaddstr(0, width - tsl + 1, ts);			free(header);		}		if (!(p = popen(command, "r"))) {			perror("popen");			do_exit(2);		}		for (y = show_title; y < height; y++) {			int eolseen = 0, tabpending = 0;			for (x = 0; x < width; x++) {				int c = ' ';				int attr = 0;				if (!eolseen) {					/* if there is a tab pending, just spit spaces until the					   next stop instead of reading characters */					if (!tabpending)						do							c = getc(p);						while (c != EOF && !isprint(c)						       && c != '\n'						       && c != '\t');					if (c == '\n')						if (!oldeolseen && x == 0) {							x = -1;							continue;						} else							eolseen = 1;					else if (c == '\t')						tabpending = 1;					if (c == EOF || c == '\n' || c == '\t')						c = ' ';					if (tabpending && (((x + 1) % 8) == 0))						tabpending = 0;				}				move(y, x);				if (option_differences) {					int oldch = inch();					char oldc = oldch & A_CHARTEXT;					attr = !first_screen					    && (c != oldc						||						(option_differences_cumulative						 && (oldch & A_ATTRIBUTES)));				}				if (attr)					standout();				addch(c);				if (attr)					standend();			}			oldeolseen = eolseen;		}		pclose(p);		first_screen = 0;		refresh();		usleep(interval * 1000000);	}	endwin();	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区四区五区入口 | 不卡一区在线观看| 91影院在线免费观看| 69堂国产成人免费视频| 亚洲欧美在线另类| 日韩高清国产一区在线| av午夜精品一区二区三区| 欧美一区二区视频在线观看2020| 日韩一区在线免费观看| 久久国产麻豆精品| 欧美人妇做爰xxxⅹ性高电影 | 亚洲毛片av在线| 日韩vs国产vs欧美| 欧美伊人精品成人久久综合97| 精品国产乱码91久久久久久网站| 午夜不卡av在线| 色吊一区二区三区| 中文一区二区完整视频在线观看| 国产一区欧美日韩| 日韩网站在线看片你懂的| 亚洲午夜在线观看视频在线| 97aⅴ精品视频一二三区| 久久久久免费观看| 国内精品免费在线观看| 欧美一卡在线观看| 蜜臀av在线播放一区二区三区| 欧美中文字幕一区| 亚洲一线二线三线久久久| 97久久精品人人澡人人爽| 国产精品免费观看视频| 国产成人8x视频一区二区| 久久亚洲综合av| 国内精品久久久久影院色| 欧美一级黄色录像| 美腿丝袜在线亚洲一区| 日韩欧美一级片| 国产永久精品大片wwwapp| 久久久91精品国产一区二区精品 | 美国十次了思思久久精品导航| 欧美美女一区二区三区| 日本v片在线高清不卡在线观看| 欧美欧美午夜aⅴ在线观看| 同产精品九九九| 3751色影院一区二区三区| 美女免费视频一区二区| 精品黑人一区二区三区久久| 国产一区二区三区视频在线播放| 久久精品在线观看| 波多野结衣一区二区三区| 中文字幕日韩一区| 欧美日韩一级二级| 久久国产精品露脸对白| 国产女人18毛片水真多成人如厕 | 国产日本欧美一区二区| 丁香另类激情小说| 夜夜爽夜夜爽精品视频| 日韩一区二区在线免费观看| 亚洲日本欧美天堂| 欧美一区二区性放荡片| 国产69精品久久99不卡| 亚洲图片自拍偷拍| 精品盗摄一区二区三区| 99v久久综合狠狠综合久久| 午夜伦理一区二区| 久久久久99精品一区| 91网站最新地址| 美女视频一区二区三区| 中文字幕一区不卡| 日韩欧美黄色影院| 91影视在线播放| 日本一不卡视频| 中文字幕一区在线观看视频| 欧美日韩一区 二区 三区 久久精品| 国产在线麻豆精品观看| 一区二区三区在线播放| 精品国产麻豆免费人成网站| 一本色道**综合亚洲精品蜜桃冫| 丝袜脚交一区二区| 欧美午夜免费电影| 成人小视频在线| 日本v片在线高清不卡在线观看| 中文字幕va一区二区三区| 欧美女孩性生活视频| 99久久夜色精品国产网站| 视频在线观看一区| 亚洲欧美电影一区二区| 久久美女艺术照精彩视频福利播放 | 波多野结衣中文字幕一区二区三区 | 亚洲一区二区视频在线| 国产亚洲精品久| 欧美一三区三区四区免费在线看 | 成人激情小说网站| 日本一道高清亚洲日美韩| 亚洲精品乱码久久久久| 国产欧美一区二区在线观看| 91精品国产91热久久久做人人| 97久久久精品综合88久久| 国产精品99久久久久| 日本aⅴ亚洲精品中文乱码| 亚洲精选视频在线| 欧美高清在线一区| 国产午夜精品在线观看| 欧美不卡激情三级在线观看| 欧美亚洲丝袜传媒另类| 国产乱子伦一区二区三区国色天香| 婷婷久久综合九色综合伊人色| 亚洲日本一区二区| 亚洲欧美日韩国产综合| 国产精品不卡在线| 国产精品情趣视频| 日本一区二区三区dvd视频在线| 欧美电视剧在线观看完整版| 91麻豆精品国产91久久久| 97se亚洲国产综合自在线不卡| 日本一区二区免费在线观看视频| 欧美美女bb生活片| 色婷婷一区二区| 一本色道综合亚洲| 色综合天天综合网天天狠天天| 成人精品视频一区二区三区| 成人午夜在线视频| 成人国产精品免费观看| 成人一区在线观看| proumb性欧美在线观看| 成人黄色免费短视频| av成人免费在线| 91网页版在线| 在线观看av一区| 91精品在线观看入口| 在线91免费看| 2024国产精品视频| 国产三级三级三级精品8ⅰ区| 欧美在线看片a免费观看| 亚洲黄网站在线观看| 亚洲欧美韩国综合色| 亚洲一区在线观看免费观看电影高清 | 精品理论电影在线观看 | 亚洲精品国产精品乱码不99| 亚洲国产毛片aaaaa无费看| 丝袜诱惑制服诱惑色一区在线观看| 免费在线一区观看| 风流少妇一区二区| 91国偷自产一区二区三区观看 | 九色|91porny| 国产在线播精品第三| 国产黄色精品网站| 91在线小视频| 欧美蜜桃一区二区三区| 日韩精品中文字幕在线一区| 2017欧美狠狠色| 国产精品久久久一本精品| 国产精品久久午夜| 亚洲精品ww久久久久久p站| 天堂蜜桃一区二区三区 | 午夜精品福利一区二区三区蜜桃| 亚洲曰韩产成在线| 国产在线观看一区二区| 暴力调教一区二区三区| 欧美一级电影网站| 国产精品视频看| 亚洲高清一区二区三区| 国产精品一区二区在线观看不卡| 成人免费视频网站在线观看| 色94色欧美sute亚洲线路一久 | 久久综合成人精品亚洲另类欧美| 国产精品久久久久久久久晋中| 同产精品九九九| 美女国产一区二区| 色哟哟国产精品免费观看| 精品久久久久久久久久久久久久久久久 | 97精品国产露脸对白| 欧美一区二区性放荡片| 一区二区三区在线免费播放| 国产成人精品免费在线| 日韩一区二区免费视频| 一区二区三区免费看视频| 国产精品一二三| 日韩精品一区二区三区视频 | 久久精品国产免费看久久精品| 国产成人精品aa毛片| 91麻豆精品91久久久久同性| 一区二区三区在线观看网站| 国产999精品久久久久久绿帽| 欧美一区二区精品| 一区二区三区精密机械公司| 国产电影一区在线| 日韩精品一区二区三区视频播放 | 精品久久国产97色综合| 亚洲第一电影网| 国产精品18久久久久久vr| 欧美日韩国产大片| 亚洲超丰满肉感bbw| 91久久精品网| 一区二区不卡在线播放| 色噜噜狠狠色综合中国| 中文字幕在线一区二区三区| 懂色一区二区三区免费观看| 国产亚洲精品免费| 懂色av中文字幕一区二区三区| 久久久久久久久伊人|