亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: 如何實現(xiàn)立即從終端獲得一個字符并返回這個字符_vmin_vtime (轉) [打印本頁]

作者: feiyinglinux    時間: 2009-09-16 09:02
標題: 如何實現(xiàn)立即從終端獲得一個字符并返回這個字符_vmin_vtime (轉)

例子::
{
int fd;
char *a ="/dev/tty";
struct termios tty,savetty;
fd=open(a,O_RDONLY|O_NONBLOCK);

tcgetattr(fd,&tty);
savetty=tty;
tty.c_lflag&=~(ECHO|ICANON);
tty.c_cc[VMIN]=0;               VMIN&VTIME=0當需要從終端獲得字符時候,立即返回
tty.c_cc[VTIME]=0;
tcsetattr(fd,TCSAFLUSH,&tty);

tcsetattr(fd,TCSAFLUSH,&savetty);

close(fd);
}


‘read()’函數(shù)行為的控制;它們是‘VMIN’和‘VTIME’。)
這些索引名字經(jīng)常被提及的方式會讓人以為它們是實在的變量,比如“設置
VMIN為1” 其實意味著“設置c_cc[VMIN]為1”。這種簡寫是有用的并且只是
偶爾引起誤會。
‘c_cc’的很多變量位置只有當其它標志被設定時才會用到。
只有‘ICANON’被設置,才用到以下變量:
‘VEOF’,‘VEOL’,‘VERASE’,‘VKILL’(如果定義了而且
‘IEXTEN’被設定,那么‘VEOL2’,‘VSTATUS’和‘VWERASE’
也用到)
只有‘ISIG’被設置,才用到以下變量:
‘VINTR’,‘VQUIT’,‘VSUSP’(如果定義了而且‘IEXTEN’被設定,
那么‘VDSUSP’也用到)
只有‘IXON’或‘IXOFF’被設置,才用到以下變量:
‘VSTOP’,‘VSTART’
只有‘ICANON’被取消,才用到以下變量:
‘VMIN’,‘VTIME’
不同系統(tǒng)實現(xiàn)會定義增加的‘c_cc’變量。謹慎的做法是在設定你希望使用的值
以前,使用‘_POSIX_VDISABLE’初始化這些變量(常量‘NCCS’提供這個數(shù)
組的大小)
‘VMIN’和‘VTIME’(根據(jù)不同的實現(xiàn)方法,它們有可能和‘VEOF’和‘VEOL’
分享相同兩個變量)具有以下含義!甐TIME’的值(如果不為0)總是被解釋為以十
分之一秒為單位的計時器)(譯者注:VTIME變量是一個字節(jié)長,所以1表示0.1秒,
最大為255,表示25.5秒)
****c_cc[VMIN] > 0, c_cc[VTIME] > 0'
只要輸入已經(jīng)有VMIN字節(jié)長,或者輸入至少有一個字符而在讀取最后一個字
符之前VTIME已經(jīng)過期,或者被信號中斷,‘read()’將返回。
****c_cc[VMIN] > 0, c_cc[VTIME] == 0'
只要輸入已經(jīng)有VMIN字節(jié)長,或者被信號中斷,‘read()’將返回。否則,將
無限等待下去。
****c_cc[VMIN] == 0, c_cc[VTIME] > 0'
只要有輸入‘read()’就返回;如果VTIME過期卻沒有數(shù)據(jù),它會返回沒有讀
到字符。(這和調制解調器掛斷時的文件結束標志有一點沖突;使用1作為VMIN,
調用‘a(chǎn)larm()’或‘select()’函數(shù)并給定超時參數(shù)可以避免這個問題。)
****c_cc[VMIN] == 0, c_cc[VTIME] == 0'
‘read()’總是立刻返回;如果沒有數(shù)據(jù)則返回沒有讀到字符。(與上面的問題
相同)
4. 系統(tǒng)信息
***********
4.1 怎樣知道我的系統(tǒng)有多少存儲器容量?
=====================================
這是另一個‘經(jīng)常未回答的問題’。在多數(shù)情況下,你不該試圖去找到答案.
如果你必需得到答案,問題的答案通常是有的,但非常依賴于不同的操作系統(tǒng)。
例如,在Solaris中,可以用 ****sysconf(_SC_PHYS_PAGES)' 和 ****sysconf(_SC_PAGESIZE)';
在FreeBSD中,可以用****sysctl()'; 在Linux中可以通過讀取并處理****/proc/meminfo'得到
(使用該文件時需小心你的程序,它要接受歷史上任何不同合法格式). 其它的操作
系統(tǒng)有各自的方式,我也沒有意識到更多可移植的方法。
在HP-UX(9版和10版)中,可以使用如下的代碼:
struct pst_static pst;
if (pstat_getstatic(&pst, sizeof(pst), (size_t) 1, 0) != -1)
{
printf(" Page Size: %lu\n", pst.page_size);
printf("Phys Pages: %lu\n", pst.physical_memory);
}


本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u2/85282/showart_2053333.html




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2