freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

顧客服務(wù)員程序設(shè)計(jì)要點(diǎn)(存儲(chǔ)版)

  

【正文】 ldren = atoi(argv[argc1])。 ) pause()。它甚至可以和inetd結(jié)合使用,由inetd負(fù)責(zé)接收每個(gè)連接。 當(dāng)程序啟動(dòng)后,N個(gè)子進(jìn)程被派生,它們分別調(diào)用accept并由內(nèi)核置入睡眠狀態(tài)。procprocproc子進(jìn)程N(yùn)listenfd子進(jìn)程1listenfd父進(jìn)程listenfd…….filesocket圖410 proc、file和socket結(jié)構(gòu)的關(guān)系 守護(hù)進(jìn)程 守護(hù)進(jìn)程的原理 守護(hù)進(jìn)程(daemon)是在系統(tǒng)后臺(tái)運(yùn)行不受終端控制的進(jìn)程,只要系統(tǒng)沒有關(guān)機(jī)或者崩潰,守護(hù)進(jìn)程將在系統(tǒng)中不間斷地運(yùn)行。這些腳本一般在/etc目錄或者以/etc/rc開頭的目錄下,它們的位置和內(nèi)容依賴于具體的實(shí)現(xiàn)。4. 可以用at命令指定在將來(lái)的某個(gè)時(shí)刻執(zhí)行程序。它設(shè)定守護(hù)進(jìn)程對(duì)接收每次鍵入的各種登記消息(log message)怎樣處理。另外也可以創(chuàng)建一個(gè)UDP套接口,將日志消息發(fā)到回饋地址及端口514。 盡管syslog函數(shù)最初是BSD系統(tǒng)開發(fā)的,但目前絕大多數(shù)Unix廠商都提供。如果沒有指定設(shè)施,缺省為L(zhǎng)OG_USER。具體使用方法如下: include void openlog(const char *ident, int options, int facility)。一些守護(hù)進(jìn)程調(diào)用openlog設(shè)置設(shè)施(它在一個(gè)進(jìn)程中通常不變),然后在調(diào)用syslog時(shí)只設(shè)置級(jí)別(因?yàn)榧?jí)別會(huì)隨錯(cuò)誤而改變)。 /* parent terminates */ /* 1st child continues */ setsid()。 i++) close(i)。改變工作目錄的另一個(gè)原因是守護(hù)進(jìn)程可能在任意文件系統(tǒng)中啟動(dòng),如果保持工作目錄不變,該文件系統(tǒng)就不能拆卸(unmount)。之所以要打開這些描述符是因?yàn)椋@樣做守護(hù)進(jìn)程調(diào)用的那些假定能使用標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出的庫(kù)函數(shù)就不會(huì)發(fā)生問(wèn)題。另外兩個(gè)守護(hù)進(jìn)程不應(yīng)該收到的信號(hào)是SIGINT和SIGWINCH,這些信號(hào)也可以用作通知守護(hù)進(jìn)程一些其它事項(xiàng)。要使守護(hù)進(jìn)程正常運(yùn)行,就需要在它運(yùn)行之前將該文件刪除。該模型有兩個(gè)問(wèn)題:1. 這些守護(hù)進(jìn)程都以幾乎相同的啟動(dòng)代碼工作,首先是創(chuàng)建套接口,還要考慮變成守護(hù)進(jìn)程(與daemon_init函數(shù)類似)。該守護(hù)進(jìn)程解決了上面提到的兩個(gè)問(wèn)題??梢粤谐鰩仔凶鳛槔樱? ftp stream tcp nowait root /etc/ftpd ftpd telnet stream tcp nowait root /etc/telnetd telnetd login stream tcp nowait root /etc/rlogind rlogindtftp dgram udp wait nobody /etc/tftpd tftpd字 段描 述service_name必須在/etc/services中socket_typestream或dgramprotocol必須在/etc/protocol(TCP或UDP)中wait_flagWait或nowaitlogin_name取自/etc/passwd文件中,通常為rootserver_program至exec的完整路徑名server_program_arguments最多五個(gè)變?cè)獔D412 inetd結(jié)構(gòu)文件中的字段 /etc/:1. 服務(wù)名稱(service_name):這個(gè)服務(wù)名稱必須在/etc/services中定義。inetd將根據(jù)這個(gè)記錄在exec加載子進(jìn)程時(shí)修改進(jìn)程的運(yùn)行權(quán)限。對(duì)應(yīng)于上面所列的結(jié)構(gòu)文件中的4行,在這個(gè)文件中有如下4行: ftp 21/tcp telnet 23/tcp tftp 69/udp login 513/tcp /etc/。 (6)fork,并且由子進(jìn)程來(lái)處理這個(gè)服務(wù)請(qǐng)求。如果對(duì)于同一個(gè)服務(wù)員又有另一個(gè)連接請(qǐng)求到達(dá),它執(zhí)行select之后立即回到父進(jìn)程,上面所列的步驟又重做一遍,由另一個(gè)子進(jìn)程來(lái)處理這個(gè)新的服務(wù)請(qǐng)求。 守護(hù)進(jìn)程是在后臺(tái)運(yùn)行的,獨(dú)立于所有終端控制的進(jìn)程。這樣接不必在調(diào)用socket、bind、listenhe 和accept了,因?yàn)檫@些操作inetd已經(jīng)完成。 IPv6與/etc/。父進(jìn)程再一次執(zhí)行select系統(tǒng)調(diào)用,等待下一個(gè)管座變?yōu)榭勺x。在這一步,inetd守護(hù)程序只是等待select系統(tǒng)調(diào)用返回。 (2)生成每一個(gè)管座后要執(zhí)行bind,為該服務(wù)員指定一個(gè)眾所周知的地址。5. 用戶名(login_name):服務(wù)器將以該用戶名對(duì)應(yīng)的權(quán)限運(yùn)行進(jìn)程。這個(gè)文本文件規(guī)定了這個(gè)超級(jí)服務(wù)員要接收哪些請(qǐng)求,收到這些請(qǐng)求后又要提供哪些服務(wù)。基于TCP或者UDP的服務(wù)器都可以使用這個(gè)守護(hù)進(jìn)程。UDP協(xié)議),然后執(zhí)行fork。圖411說(shuō)明了這個(gè)思想。守護(hù)進(jìn)程運(yùn)行時(shí)沒有控制終端,所以它不會(huì)收到來(lái)自內(nèi)核的SIGHUP信號(hào)。有些守護(hù)進(jìn)程以讀寫方式打開/dev/null,并將它復(fù)制到標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出。例如,打印機(jī)守護(hù)進(jìn)程可能會(huì)把工作目錄改為打印機(jī)的假脫機(jī)處理(spool)目錄,即它工作時(shí)要使用的目錄。 /* clear our file mode creation mask */ for (i = 0。 pid_t pid。LOG_NDELAY選項(xiàng)能使套接口在調(diào)用openlog時(shí)創(chuàng)建。另外,進(jìn)程也可以調(diào)用openlog和closelog。表44 syslog消息優(yōu)先級(jí)優(yōu)先級(jí)(level)值描述LOG_EMERG0系統(tǒng)不可用(優(yōu)先級(jí)最高)LOG_ALERT1必須立即進(jìn)行處理LOG_CRIT2危險(xiǎn)情況LOG_ERR3出錯(cuò)情況LOG_WARNING4警告性情況LOG_NOTICE5常見但值得注意的情況(缺?。㎜OG_INFO6通告消息LOG_DEBUG7調(diào)試消息(優(yōu)先級(jí)最低) 登記消息還包含一個(gè)標(biāo)識(shí)發(fā)送消息進(jìn)程的類型的設(shè)施。守護(hù)進(jìn)程為了登記消息通常調(diào)用syslog函數(shù)。如果該守護(hù)進(jìn)程收到SIGHUP信號(hào),它將重新讀入配置文件。 syslog守護(hù)進(jìn)程 Unix或Linux系統(tǒng)通常會(huì)從一個(gè)初始化腳本中啟動(dòng)syslog守護(hù)進(jìn)程,只要系統(tǒng)運(yùn)行,它就一直運(yùn)行。 3. cron守護(hù)進(jìn)程按規(guī)則定期執(zhí)行一些程序,由它啟動(dòng)的程序也以守護(hù)進(jìn)程的方式運(yùn)行。雖然使服務(wù)員程序在系統(tǒng)后臺(tái)運(yùn)行很容易,但是用戶還應(yīng)該使程序能自動(dòng)轉(zhuǎn)到后臺(tái)運(yùn)行并且脫離與終端的聯(lián)系。為了避免驚群?jiǎn)栴}的發(fā)生,用戶不希望有額外子進(jìn)程空閑,某些Unix內(nèi)核有一個(gè)名字為wakeup_one的函數(shù),對(duì)于等待某個(gè)事件的一群進(jìn)程,它只喚醒一個(gè)等待進(jìn)程,而不是所有進(jìn)程。每個(gè)file結(jié)構(gòu)有一個(gè)訪問(wèn)計(jì)數(shù),它在文件或者套接口打開時(shí)為1,而每當(dāng)調(diào)用fork或者dup本描述字時(shí),它就增加1。因?yàn)檫^(guò)多的子進(jìn)程會(huì)占用系統(tǒng)的資源,從而導(dǎo)致系統(tǒng)性能下降。 for ( 。addrlen)。static pid_t *pids。20世紀(jì)80年代后期,當(dāng)一個(gè)服務(wù)器一天只需處理幾百、幾千個(gè)顧客請(qǐng)求時(shí),這樣實(shí)現(xiàn)從性能上是能夠滿足的。 if ( (connfd = accept(listenfd, cliaddr, amp。addrlen)。include intmain(int argc, char **argv){ int listenfd, connfd。 Write(connfd, buff, strlen(buff))。servaddr, sizeof(servaddr))。 time_t ticks。l 預(yù)先創(chuàng)建線程(prethreading)。這種方式主要用于簡(jiǎn)單的網(wǎng)絡(luò)服務(wù)。(應(yīng)用進(jìn)程的數(shù)據(jù)沿協(xié)議棧向下傳遞時(shí),以某種形式拷貝到內(nèi)核的緩沖區(qū),當(dāng)鏈路層把數(shù)據(jù)傳出后這個(gè)拷貝將丟棄。但如上所述,MSS選項(xiàng)的目的是避免分片,而新的實(shí)現(xiàn)又使用路徑MTU發(fā)現(xiàn)功能。所以從寫一個(gè)TCP套接口的write調(diào)用成功返回僅表示可以重新使用應(yīng)用進(jìn)程的緩沖區(qū)。因此65535這個(gè)MSS值被認(rèn)為是“無(wú)限”的特殊值,它只在用到特大有效負(fù)荷選項(xiàng)時(shí)才有用,而這種情況又要求MTU超過(guò)65535。所以很多使用UDP的應(yīng)用程序(DNS、RIP、TFTP、BOOTP、SNMP)避免產(chǎn)生大于576字節(jié)的數(shù)據(jù)報(bào)。如果IPv6路由器接收到一個(gè)超過(guò)其外出鏈路MTU大小的IPv6數(shù)據(jù)報(bào)年,它將產(chǎn)生一個(gè)ICMPv6的“packet too big(分組太大)”的出錯(cuò)消息。但是,IPv6只在數(shù)據(jù)報(bào)產(chǎn)生的主機(jī)執(zhí)行分片;IPv6路由器對(duì)其轉(zhuǎn)發(fā)的數(shù)據(jù)報(bào)不進(jìn)行分片。其它鏈路其MTU可以配置。對(duì)于上面的例子,對(duì)于端口21存在三個(gè)套接口, 21,那么它就傳送給第一個(gè)子進(jìn)程;, 21,那么它就傳送給第二個(gè)子進(jìn)程;所有其它的目的端口21的TCO分組則傳送給擁有監(jiān)聽套接口的初始服務(wù)器(父進(jìn)程)。通配的本地地址表示“任意”接口。服務(wù)器在它的眾所周知的端口(例如21端口)上執(zhí)行被動(dòng)打開,并等待顧客的請(qǐng)求。 /* child closes listening socket */ Doit(connfd)。 pid_t pid。 并發(fā)服務(wù)器 套接口對(duì) 一個(gè)TCP連接的套接口對(duì)(socket pair)是一個(gè)定義該連接的兩個(gè)端點(diǎn)的四元組:本地IP地址、本地TCP端口號(hào)、遠(yuǎn)程IP地址和遠(yuǎn)程TCP端口號(hào)。另外兩個(gè)TCP服務(wù)器time和daytime并不需要派生,因?yàn)樗鼈兊姆?wù)實(shí)現(xiàn)起來(lái)非常簡(jiǎn)單(取得當(dāng)前的時(shí)間和日期,把它格式化后輸出,在關(guān)閉連接),因此它們由inetd直接處理。表中的所有服務(wù)同時(shí)使用TCP和UDP提供,并且這兩個(gè)協(xié)議的端口號(hào)也相同。 解決cache一致性的最簡(jiǎn)單的方法是使用文件上鎖技術(shù),以防止多個(gè)顧客對(duì)文件的同時(shí)訪問(wèn)。雙重高速緩存的方法用于減少通信量和磁盤I/O。然而關(guān)系數(shù)據(jù)庫(kù)廠商盡管支持SQL,但他們將自己專有的擴(kuò)展加到了SQL中。主要原因是用戶購(gòu)買應(yīng)用程序而不是服務(wù)器;用戶將只選擇那些運(yùn)行了他們希望的應(yīng)用程序的服務(wù)器。因此,中間層服務(wù)器同時(shí)充當(dāng)著顧客和服務(wù)器。近年來(lái),一種三層結(jié)構(gòu)變得日益流行,如圖43所示。這種所謂的“胖顧客”(fat client)模型已經(jīng)被像Powersoft公司的PowerBuilder和Gupta公司的SQL Windows這樣的應(yīng)用程序開發(fā)工具所采用。在這種配置背后的基本原理是用戶工作站最適合提供良好的用戶界面,并且數(shù)據(jù)庫(kù)和應(yīng)用程序很容易在中心系統(tǒng)上維護(hù)。 顧客/服務(wù)器應(yīng)用程序分類 在顧客/服務(wù)器的通用框架中,對(duì)顧客和服務(wù)器的工作劃分有許多不同的實(shí)現(xiàn)方法。顧客服務(wù)器請(qǐng)求/應(yīng)答表示服務(wù)應(yīng)用邏輯(服務(wù)器部分)應(yīng)用邏輯(顧客部分)通信軟件通信軟件協(xié)議交互服務(wù)器操作系統(tǒng)顧客操作系統(tǒng)硬件平臺(tái)硬件平臺(tái)圖41 顧客/服務(wù)器體系結(jié)構(gòu) 使顧客和服務(wù)器能夠交互的基礎(chǔ)是通信軟件,這種軟件主要例子是TCP/IP。l 對(duì)于用戶組織和廠商來(lái)說(shuō),他們有一個(gè)共同的承諾,使系統(tǒng)開放和模塊化。最常見的是數(shù)據(jù)庫(kù)服務(wù)器,服務(wù)器能夠使很多顧客共享對(duì)同一信息源的訪問(wèn)。n更多企業(yè)學(xué)院: 《中小企業(yè)管理全能版》183套講座+89700份資料《總經(jīng)理、高層管理》49套講座+16388份資料《中層管理學(xué)院》46套講座+6020份資料服務(wù)器為顧客提供一組共享的用戶服務(wù)程序。l 盡管應(yīng)用是分散的,但仍然強(qiáng)調(diào)數(shù)據(jù)的集中以及很多網(wǎng)絡(luò)管理和使用功能的集中。只要特定的顧客和服務(wù)器共享相同的通信協(xié)議并支持相同的應(yīng)用程序,低層的細(xì)節(jié)不必考慮。在大多數(shù)顧客/服務(wù)器系統(tǒng)中,都突出強(qiáng)調(diào)了要提供易于使用、易于學(xué)習(xí)、功能強(qiáng)大并且靈活的圖形用戶界面(GUI)。這種配置是早期的顧客/服務(wù)器模式,尤其是部門級(jí)系統(tǒng)的典型。圖42c和圖42d對(duì)應(yīng)的配置情況是在顧客端上有相當(dāng)大的一部分負(fù)載。 三層顧客/服務(wù)器結(jié)構(gòu) 傳統(tǒng)的顧客/服務(wù)器結(jié)構(gòu)包括兩級(jí)(或稱兩層):顧客層和服務(wù)器層。 在中間層服務(wù)器和后端服務(wù)器之間的交互也遵從顧客/服務(wù)器的模式。這對(duì)于用戶來(lái)說(shuō)具有明顯的好處,而廠商也受到市場(chǎng)的驅(qū)動(dòng)來(lái)提供這樣的接口。對(duì)于特定的應(yīng)用領(lǐng)域,結(jié)構(gòu)化查詢語(yǔ)言(SQL)提供一種標(biāo)準(zhǔn)化的方
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1