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

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

?? gcc-howto-4.html

?? Linux初學(xué)者最好的老師就是howto了。相當(dāng)于函數(shù)man。
?? HTML
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
select()應(yīng)該是藉由修正時(shí)間的數(shù)值(如果有的話),再傳回自原始計(jì)時(shí)開始後所剩馀的時(shí)間。未來的版本可能會(huì)使這項(xiàng)功能實(shí)現(xiàn)。因此,就目前而言,若以為呼叫select()之後,計(jì)時(shí)指標(biāo)仍然不會(huì)被修正過,可是一種非常不明智的想法喔!
</BLOCKQUOTE>
<P>未來就在我們的眼前了!至少,在這兒你絕對(duì)可以看到。函數(shù)<CODE>select()</CODE>傳回的,是扣除等待尚未到達(dá)的資料所耗費(fèi)的時(shí)間後,其剩馀的時(shí)間數(shù)值。如果在計(jì)時(shí)結(jié)束時(shí),都沒有資料傳送進(jìn)來,計(jì)時(shí)引數(shù)便會(huì)設(shè)為0;如果接著還有任何的select(),以同樣的計(jì)時(shí)structure來呼叫,那麼select()便會(huì)立刻結(jié)束。
<P>若要修正這項(xiàng)問題,只要每次呼叫<CODE>select()</CODE>前,都把計(jì)時(shí)數(shù)值放到計(jì)時(shí) structure內(nèi),就沒有問題了。把下面的程式碼,
<BLOCKQUOTE><CODE>
<PRE>
      struct timeval timeout;
      timeout.tv_sec = 1; timeout.tv_usec = 0;
      while (some_condition)
            select(n,readfds,writefds,exceptfds,&amp;timeout); 
</PRE>
</CODE></BLOCKQUOTE>

改成,
<BLOCKQUOTE><CODE>
<PRE>
      struct timeval timeout;
      while (some_condition) {
            timeout.tv_sec = 1; timeout.tv_usec = 0;
            select(n,readfds,writefds,exceptfds,&amp;timeout);
      }
</PRE>
</CODE></BLOCKQUOTE>
<P>這個(gè)問題,在有些版本的Mosaic里是相當(dāng)著名的,只要一次的等待,Mosaic就掛在那里了。Mosaic的螢?zāi)挥疑辖牵遣皇怯袀€(gè)圓圓的、會(huì)旋轉(zhuǎn)的地球動(dòng)畫。那顆球轉(zhuǎn)得愈快,就表示資料從網(wǎng)路上傳送過來的速率愈慢!
<P>
<H3><A NAME="index.52"></A> <A NAME="index.51"></A> 產(chǎn)生中斷的系統(tǒng)呼叫  </H3>

<H3>特徵:</H3>

<P>當(dāng)一支程式以Ctrl-Z中止、然後再重新執(zhí)行時(shí)□或者是其它可以產(chǎn)生Ctrl-C中斷信號(hào)的情況,如子程序的終結(jié)等□系統(tǒng)就會(huì)抱怨說"interrupted system call"或是"write: unknown error",或者諸如此類的訊息。
<P>
<H3>問題點(diǎn):</H3>

<P>POSIX的系統(tǒng)檢查信號(hào)的次數(shù),比起一些舊版的Unix是要多那麼一點(diǎn)。如果是Linux,可能就會(huì)執(zhí)行signal handlers了□
<P>
<UL>
<LI> 非同步地(計(jì)時(shí)器的滴答聲)</LI>
<LI> 系統(tǒng)呼叫的傳回值</LI>
<LI> 在下列系統(tǒng)呼叫的執(zhí)行期間∶
<CODE>select()</CODE>, <CODE>pause()</CODE>, <CODE>connect()</CODE>,<CODE>accept()</CODE>, <CODE>read()</CODE> on terminals, sockets, pipes or files in <CODE>/proc</CODE>, <CODE>write()</CODE> on terminals, sockets, pipes or the line printer, <CODE>open()</CODE> on FIFOs, PTYs or serial lines,<CODE>ioctl()</CODE> on terminals, <CODE>fcntl()</CODE> with command <CODE>F_SETLKW</CODE>, <CODE>wait4()</CODE>, <CODE>syslog()</CODE>, any TCP or NFS operations.  </LI>
</UL>
<P>就其它的作業(yè)系統(tǒng)而言,你需要的可能就是下面這些系統(tǒng)呼叫了:
<CODE>creat()</CODE>, <CODE>close()</CODE>, <CODE>getmsg()</CODE>, <CODE>putmsg()</CODE>,
<CODE>msgrcv()</CODE>, <CODE>msgsnd()</CODE>, <CODE>recv()</CODE>, <CODE>send()</CODE>,
<CODE>wait()</CODE>, <CODE>waitpid()</CODE>, <CODE>wait3()</CODE>, <CODE>tcdrain()</CODE>,
<CODE>sigpause()</CODE>, <CODE>semop()</CODE> to this list.
<P>
<P>在系統(tǒng)呼叫期間,若有一信號(hào)(那支程式本身應(yīng)準(zhǔn)備好handler因應(yīng)了)產(chǎn)生,handler就會(huì)被呼叫。當(dāng)handler將控制權(quán)轉(zhuǎn)移回系統(tǒng)呼叫時(shí),它會(huì)偵測(cè)出它已經(jīng)產(chǎn)生中斷,而且傳回值會(huì)立刻設(shè)定成-1,而<CODE>errno設(shè)定成EINTR</CODE>。程式并沒有想到會(huì)發(fā)生這種事,所以就掛了。
<P>有兩種修正的方法可以選擇:
<P>(1) 對(duì)每個(gè)你自行安裝的signal handler,都須在sigaction的旗號(hào)加上<CODE>SA_RESTART</CODE>。例如,把下列的程式,
<P>
<BLOCKQUOTE><CODE>
<PRE>
  signal (sig_nr, my_signal_handler);
</PRE>
</CODE></BLOCKQUOTE>

改成,
<BLOCKQUOTE><CODE>
<PRE>
  signal (sig_nr, my_signal_handler);
  { struct sigaction sa;
    sigaction (sig_nr, (struct sigaction *)0, &amp;sa);
#ifdef SA_RESTART
    sa.sa_flags |= SA_RESTART;
#endif
#ifdef SA_INTERRUPT
    sa.sa_flags &amp;= ~ SA_INTERRUPT;
#endif
    sigaction (sig_nr, &amp;sa, (struct sigaction *)0);
  }
</PRE>
</CODE></BLOCKQUOTE>
<P>要注意的是,當(dāng)這部份的變更大量應(yīng)用到系統(tǒng)呼叫之後,呼叫<CODE>read()</CODE>、<CODE>write()</CODE>、<CODE>ioctl()</CODE>、 <CODE>select()</CODE>、 <CODE>pause()</CODE> 與 <CODE>connect()</CODE>時(shí),你仍然得自行檢查<CODE>EINTR</CODE>。如下所示:
<P>(2) 你自己得很明確地檢查<CODE>EINTR</CODE>:
<P>這里有兩個(gè)針對(duì)<CODE>read()</CODE>與<CODE>ioctl()</CODE>的例子。
<P>
<P>原始的程式片段,使用<CODE>read()</CODE>:
<P>
<BLOCKQUOTE><CODE>
<PRE>
int result;
while (len > 0) { 
  result = read(fd,buffer,len);
  if (result &lt; 0) break;
  buffer += result; len -= result;
}
</PRE>
</CODE></BLOCKQUOTE>

修改成,
<BLOCKQUOTE><CODE>
<PRE>
int result;
while (len > 0) { 
  result = read(fd,buffer,len);
  if (result &lt; 0) { if (errno != EINTR) break; }
  else { buffer += result; len -= result; }
}
</PRE>
</CODE></BLOCKQUOTE>

原始的程式片段,使用<CODE>ioctl()</CODE>:
<P>
<BLOCKQUOTE><CODE>
<PRE>
int result;
result = ioctl(fd,cmd,addr);
</PRE>
</CODE></BLOCKQUOTE>

修改成,
<BLOCKQUOTE><CODE>
<PRE>
int result;
do { result = ioctl(fd,cmd,addr); }
while ((result == -1) &amp;&amp; (errno == EINTR));
</PRE>
</CODE></BLOCKQUOTE>
<P>注意一點(diǎn),有些版本的BSD Unix,其內(nèi)定的行為是重新執(zhí)行系統(tǒng)呼叫。若要讓系統(tǒng)呼叫中斷,得使用 <CODE>SV_INTERRUPT</CODE>或<CODE>SA_INTERRUPT</CODE>旗號(hào)。
<P>
<P>
<H3><A NAME="index.56"></A> <A NAME="index.55"></A> <A NAME="index.54"></A> <A NAME="index.53"></A> 可以寫入的字串    </H3>

<P> gcc對(duì)其users總懷抱著樂觀的想法,相信當(dāng)他們打算讓某個(gè)字串當(dāng)作常數(shù)來用時(shí)---那它就真的只是字串常數(shù)而已。因此,這種字串常數(shù)會(huì)儲(chǔ)存在程式碼的記憶體區(qū)段內(nèi)。這塊區(qū)域可以page到磁碟機(jī)的image上,避免耗掉swap的記憶體空間,而且任何嘗試寫入的舉動(dòng)都會(huì)造成分頁(yè)的錯(cuò)誤(segmentation fault)。這可是一種特色呢!
<P>對(duì)老舊一點(diǎn)的程式而言,這可能會(huì)產(chǎn)生一個(gè)問題。例如,呼叫<CODE>mktemp()</CODE>,傳遞的引數(shù)(arguments)是字串常數(shù)。 <CODE>mktemp()</CODE>會(huì)嘗試著在*適當(dāng)?shù)奈恢?重新寫入它的引數(shù)。
<P>修正的方法不外乎(a)以<CODE>-fwritable-strings</CODE>編譯,迫使gcc將此常數(shù)置放在資料記憶體空間內(nèi);或者(b)將侵犯地權(quán)的部份重新改寫,配置一個(gè)不為常數(shù)的字串,在呼叫前,先以strcpy()將資料拷貝進(jìn)去。
<P>
<H3><A NAME="index.57"></A> 為什麼呼叫<CODE>execl()</CODE>會(huì)失敗? </H3>

<P>那是因?yàn)槟愫艚械姆绞讲粚?duì)。<CODE>execl</CODE>的第一個(gè)引數(shù)是你想要執(zhí)行的程式名.第二個(gè)與接續(xù)的引數(shù)會(huì)變成你所呼叫的程式的<CODE>argv</CODE>陣列。記住:傳統(tǒng)上,<CODE>argv[0]</CODE>是只有當(dāng)程式?jīng)]有帶著引數(shù)執(zhí)行時(shí),才會(huì)有設(shè)定值。所以羅,你應(yīng)該這樣寫:
<P>
<BLOCKQUOTE><CODE>
<PRE>
execl("/bin/ls","ls",NULL);
</PRE>
</CODE></BLOCKQUOTE>

而不是只有,
<BLOCKQUOTE><CODE>
<PRE>
execl("/bin/ls", NULL);
</PRE>
</CODE></BLOCKQUOTE>
<P>
<P>執(zhí)行程式而不帶任何引數(shù),可解釋成是一種邀請(qǐng)函,目的是把此程式的動(dòng)態(tài)程式庫(kù)獨(dú)立的特性印出來。至少,a.out是這樣的。就ELF而言。事情就不是這樣了.
<P>
<P>(如果你想得知此程式庫(kù)的資訊,有一些更簡(jiǎn)單的介面可用;參考動(dòng)態(tài)載入那一章節(jié),或是<CODE>ldd</CODE>的manual page。)
<P>11/16/97譯
6/2/98修正
<P>
<P>
<HR>
<A HREF="GCC-HOWTO-5.html">Next</A>
<A HREF="GCC-HOWTO-3.html">Previous</A>
<A HREF="GCC-HOWTO.html#toc4">Contents</A>
</BODY>
</HTML>

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
136国产福利精品导航| 亚洲欧美国产毛片在线| 在线看国产日韩| 国产剧情av麻豆香蕉精品| 国产精品久久久久影院| 久久理论电影网| 欧美一卡二卡在线| 欧美曰成人黄网| 96av麻豆蜜桃一区二区| 成人深夜视频在线观看| 狠狠色丁香婷婷综合| 久久精品噜噜噜成人av农村| 性做久久久久久免费观看欧美| 亚洲欧洲色图综合| 欧美激情中文字幕| 久久先锋影音av| 久久久青草青青国产亚洲免观| 欧美va在线播放| 日韩女优视频免费观看| 欧美一区二区三区免费在线看| 大尺度一区二区| 成人综合激情网| 成人三级在线视频| 国产一区亚洲一区| 国产综合久久久久影院| 国产制服丝袜一区| 狠狠色2019综合网| 91电影在线观看| 在线观看免费视频综合| 色88888久久久久久影院按摩| 色呦呦一区二区三区| 91尤物视频在线观看| 色噜噜偷拍精品综合在线| 在线观看日韩毛片| 欧美午夜一区二区| 欧美日韩激情一区二区三区| 3atv在线一区二区三区| 69久久夜色精品国产69蝌蚪网| 欧美一区二区免费| 久久精品在这里| 椎名由奈av一区二区三区| 一区二区三区 在线观看视频| 国产精品护士白丝一区av| 亚洲精品一卡二卡| 蜜桃久久久久久| 97久久超碰精品国产| 91精品国产免费| 亚洲人成7777| 午夜精品久久久久久久| 国产在线不卡一区| 91麻豆精品一区二区三区| 日韩欧美综合一区| 日韩美女视频一区二区| 久久精品久久精品| 91在线视频播放| 26uuuu精品一区二区| 亚洲国产日韩a在线播放性色| 国产一区 二区| 欧美日韩和欧美的一区二区| 欧美极品美女视频| 日本成人在线一区| 色哟哟日韩精品| 久久久欧美精品sm网站| 天堂一区二区在线| 97久久人人超碰| 久久久激情视频| 麻豆精品一二三| 欧美日韩不卡一区二区| 国产精品拍天天在线| 精品综合免费视频观看| 欧美精品一卡二卡| 亚洲黄色尤物视频| 成人自拍视频在线观看| 亚洲精品一线二线三线| 日韩在线观看一区二区| 日本高清成人免费播放| 亚洲国产成人自拍| 国内外成人在线视频| 欧美日韩国产一级| 亚洲精品欧美综合四区| 国产成人免费视频精品含羞草妖精| 7777精品伊人久久久大香线蕉最新版| 亚洲三级理论片| 国产成人福利片| 2023国产一二三区日本精品2022| 轻轻草成人在线| 欧美日韩日日骚| 一区二区三区日韩精品| 日本韩国欧美一区二区三区| 国产精品第四页| 99久久精品免费精品国产| 欧美国产日产图区| 宅男在线国产精品| 一区二区三区四区国产精品| 99精品视频在线观看| 中文字幕一区三区| 成人动漫精品一区二区| 国产精品剧情在线亚洲| 成人av电影在线| 国产精品精品国产色婷婷| 成人国产精品免费| 国产精品国产三级国产a | 国产.欧美.日韩| 久久久久久一二三区| 国产在线麻豆精品观看| 久久久五月婷婷| 丁香婷婷综合激情五月色| 国产日产欧美一区二区视频| 国产成人精品免费看| 欧美国产日韩a欧美在线观看| 国产不卡视频一区二区三区| 国产精品久久久久婷婷| 色拍拍在线精品视频8848| 亚洲精品免费播放| 欧美色图天堂网| 日韩精品91亚洲二区在线观看| 欧美乱妇15p| 蜜臀精品久久久久久蜜臀| 精品三级av在线| 国产福利一区在线| 国产精品女主播在线观看| 一本一道波多野结衣一区二区| 亚洲国产日韩在线一区模特| 日韩小视频在线观看专区| 激情深爱一区二区| 欧美韩国日本综合| 91蝌蚪porny成人天涯| 午夜激情久久久| 精品国产成人在线影院 | 欧美一区二区三区免费在线看| 美国欧美日韩国产在线播放| 精品国产99国产精品| 波多野结衣视频一区| 亚洲图片自拍偷拍| 日韩欧美成人午夜| av影院午夜一区| 亚洲.国产.中文慕字在线| 精品国产第一区二区三区观看体验| 成人免费看片app下载| 亚洲国产视频在线| 日韩欧美精品在线视频| 床上的激情91.| 偷拍亚洲欧洲综合| 国产亚洲欧美一区在线观看| 色一情一乱一乱一91av| 奇米亚洲午夜久久精品| 国产精品入口麻豆原神| 欧美日韩一区三区四区| 国产成人综合精品三级| 亚洲一区二区欧美| 久久免费电影网| 欧美日韩高清一区| 国产高清精品网站| 亚洲成人在线网站| 亚洲国产成人在线| 日韩一级二级三级| 91久久香蕉国产日韩欧美9色| 老司机精品视频线观看86 | 51精品久久久久久久蜜臀| 国产一区三区三区| 一区二区免费看| 久久精品在线观看| 欧美人与z0zoxxxx视频| 99天天综合性| 国内精品久久久久影院一蜜桃| 亚洲一区在线电影| 日本一区二区三区视频视频| 在线播放一区二区三区| 91在线免费看| 国产成人免费视频网站| 秋霞午夜鲁丝一区二区老狼| 一区二区三区四区亚洲| 久久精子c满五个校花| 欧美一区二区三区免费观看视频| 一本高清dvd不卡在线观看| 国产一区二区按摩在线观看| 日韩av一区二区三区| 一区二区三区欧美| 国产精品你懂的在线欣赏| 26uuu精品一区二区在线观看| 精品视频一区二区三区免费| 色综合一区二区| 成人综合日日夜夜| 韩国理伦片一区二区三区在线播放| 亚洲国产一区二区在线播放| 亚洲国产精品成人综合色在线婷婷 | 麻豆专区一区二区三区四区五区| 一区二区三区小说| 国产精品福利一区| 久久久久久免费| 精品美女被调教视频大全网站| 91精品国产综合久久久久久久久久| 在线欧美日韩精品| 99精品视频一区二区| 成人精品一区二区三区中文字幕| 国产揄拍国内精品对白| 国产综合成人久久大片91| 经典三级在线一区| 久久国产精品99精品国产| 老司机精品视频线观看86|