µn¤J
¡U
µù¥U
¡U
·|û¤¤¤ß
¡U
µ²±b
¡U
°ö°V½Òµ{
Å]ªk§Ì¤l
¡U
¦Û¸ê¥Xª©
¡U
¹q¤l®Ñ
¡U
«ÈªA¤¤¤ß
¡U
´¼¼z«¬¥ßÊ^·|û
®Ñ¦W
¥Xª©ªÀ
§@ªÌ
isbn
½s¸¹
5050Å]ªk²³Äw
|
NG®Ñ«°
|
°ê»Ú¯Å«~µP½Òµ{
|
Àu´f³qª¾
|
ÅRÆE^¶¯µ¼Öºë¿ï
|
CentOS 6.x¥ø·~²{³õ¹ê¾ÔÄ_¨å(ªþ¨â¤ùDVD)
¦¹§@ªÌµL¬ÛÃö®ÑÄy
¤å¾Ç¤p»¡
¤å¾Ç
¡U
¤p»¡
°ÓºÞ³Ð§ë
°]¸g§ë¸ê
¡U
¦æ¾P¥øºÞ
¤H¤åÃÀ§{
©v±Ð¡Bõ¾Ç
ªÀ·|¡B¤H¤å¡B¥v¦a
ÃÀ³N¡B¬ü¾Ç
¡U
¹q¼vÀ¸¼@
Ày§Ó¾i¥Í
ÂåÀø¡B«O°·
®Æ²z¡B¥Í¬¡¦Ê¬ì
±Ð¨|¡B¤ß²z¡BÀy§Ó
¶i׾Dzß
¹q¸£»Pºô¸ô
¡U
»y¨¥¤u¨ã
Âø»x¡B´Á¥Z
¡U
x¬F¡Bªk«ß
°Ñ¦Ò¡B¦Ò¸Õ¡B±Ð¬ì¥Î®Ñ
¬ì¾Ç¤uµ{
¬ì¾Ç¡B¦ÛµM
¡U
¤u·~¡B¤uµ{
®a®x¿Ë¤l
®a®x¡B¿Ë¤l¡B¤H»Ú
«C¤Ö¦~¡Bµ£®Ñ
ª±¼Ö¤Ñ¦a
®È¹C¡B¦a¹Ï
¡U
¥ð¶¢®T¼Ö
º©µe¡B´¡¹Ï
¡U
¨î¯Å
·s¬}±xUNIX¡G³nÅé²¾´ÓNT½g
¡]ªþCD¡^
§@ªÌ¡G
Proting UNIX Applications to Windows NT¡F
ĶªÌ¡G
沈炳¶¯¡F校¾\¡G¾H°]文博士
¤ÀÃþ¡G
¹q¸£»Pºô¸ô
¡þ
§@·~¨t²Î
¥Xª©ªÀ¡G
©MºÓ¬ì§Þ
¥Xª©¤é´Á¡G1998/11/1
®ÑÄy½s¸¹¡Gsb0059869
¶¼Æ¡G0
©w»ù¡G
920
¤¸
Àu´f»ù¡G
88
§é
810
¤¸
®Ñ»ùY¦³²§°Ê¡A¥H¥Xª©ªÀ¹ê»Ú©w»ù¬°·Ç
µ´ª©®Ñ
µ´ª©®Ñ¡G½T©w¤£¦Aª©ªº°Ó«~¡A¶È´£¨Ñ®ÑÄy¸ê°T°Ñ¦Ò¡C
µû»ù¼Æ¡G
(½Ð±N·Æ¹«²¾¦Ü¬P¬P³B¶i¦æµû»ù)
¥Ø«e¥§¡µû»ù¡G
¤å¦r³sµ²
½Æ»s»yªk
·s¬}±xUNIX¡G³nÅé²¾´ÓNT½g
¹Ï¤ù³sµ²
½Æ»s»yªk
¤À
¨É
¤º®e²¤¶
¦PÃþ±ÀÂË
■ 內容簡介
目前的作業系統可¿×是 UNIX »P Windows NT二分天下的局±¡A正也因為如此¡A程式³]p師在工作環境中¡A也就不得不去±對應用程式移植作業的ÀY痛問ÃD¡C 本書是從一個專業ªÌ的¨¤度¡A對於應用程式的移植¹L程中所有可¯à發生的問ÃD一一提出分析探°Q¡C為了Åý移植作業更為¶¶暢¡A同時又¯àÁ×免³´入¶i°h兩Ãø的窘境¡A作ªÌº先對兩種作業系統的細³¡結構¡A»P應用程式¿à以正常¹B作的整Åé環境¶i¦æ全±性的介紹¡A然後才再¶i一步對移植作業的可¦æ性»P準備工作加以µû估¡C 本書不但具有工具書的功¯à¡A更是一本極具價值的教科書¡C
■ 目¿ý
第1章 ±對問ÃD 第2章 Unix-NT的移植作業 第3章 ³]pªÌ所±Á{的困境 第4章 ¸Ó如何µÛ手 第5章 Windows NT 的系統架構 第6章 ¿é入/¿é出子系統 第7章 網¸ô的程式³W劃 第8章 使用ªÌ介±»P繪圖應用程式 第9章 Windows NT 系統的原始¶}發工具 第10章 DLL的程式³]p»P低¶¥°£¿ù作業 第11章 Ãþ似Unix 的程式³]p環境 第12章 Ãþ似Unix 的使用ªÌ環境 第13章 從Posix 的¨¤度來探°Q Win32 的 API 第14章 其他的 API 第15章 從Unix到Windows NT的專ªù³N»y 第16章 ¸Ñ決方案»P秘³Z 第17章 作業µû估 索引
■ 內文¿ï¿ý¡Ð¡Ð
第一章±對問ÃD ¶i¦æ程式移植之前¡Aºn之Á|乃是判斷是否值得¡H再¦Ò慮³¡份程式對整個系統以及³\多其他使用ªÌ的影ÅT¡A並¶i¦æ成本»P效益µû估¡C然後才決ij¡u移植或另ÁÊ¡v¡C同時ÁÙn決定如何完成系統測¸Õ¡B功¯à校Åç以及效¯àµû估等事¶µ¡C對於相Ãö¸ê°T的取得也必¶·n瞭¸Ñ¡C 最後Ãö於程式移植到NT平台¡A勿庸置疑的¡A微³n公司¡]Microsoft¡^就是最新的¸ê°T來源¡C對於一¯ë中型或ªÌ是大型的p劃¡A建ijq¾\ MSDN »P Internet Access¡C下列為一些«n的相Ãö網站¡G · http://www.datafocus.com/port/default.htm介紹了一些專ªù為Nutcracker toolset 使用ªÌ所³]p的程式移植方法½×¡C · http://www.unix.digital.com/products/interop/UnixandNT 描z了}吉多¡]Digital¡^公司如何投入了大¶q的心¦å去協助 VMS 及 Unix 用戶移植到 Windows NT¡C · http://nentug.org/unix-to-nt¡A由新^格Äõ地區的 NT User's Group 所主¿ì¡A其中對於相ÃöijÃD的使用經Åç»P¸ê料的取得³£有«D常¸Ô盡的°Q½×¡C筆ªÌ在此強烈的建ij大家³y³X上z的網站¡C 不幸的是¡A對於您所¾D¹J到問ÃD¡A³o些文獻¸ê料往往無法提供一個滿意的方案¡C如果您正為了一個小¿ù»~¦Ó³´入½¦µÛ¡A特別是對於¨º些低¶¥的系統程式¡F³o時¡A您得¶i¦æ°f向工程¡]reverse enginerring¡^¡A以徹底瞭¸Ñ系統到底在搞什»ò名堂¡C在下一章¸Ì¡A將°Q½×如何移植現有應用程式以¹F到¹w期的功¯à¡B如何¶i¦æ°f向工程的技巧¡F同時在第十章¡uDLL的程式³W劃»P低¶¥°£¿ù¡v¸Ì¡A將°Q½×如何利用一些有用的工具程式以徹底剖析 Windows NT¡C 目前在 UNIX系統中已有³\多知名且有用的應用程式及程式庫成功地移植到Windows NT系統¡A其中包括TCP 網¸ô協定堆疊¡B各種 PC-NFS¡]網¸ô檔案系統¡^埠¡B各種命令¸ÑĶ器¡]shell¡^¡B¹L濾器¡B以及包括 bash¡Bgcc¡Bvi 和 GNU Emacs等在內的工具程式¡C上z各種成功的經Åç¡A對於正在¦Ò慮程式移植的人來»¡¡A應¸Ó是最大的¹ª»R¡C 在移植作業上¡A由於 UNIX 和 Windows NT 在系統環境的基本³]p理念上就不同¡A¦Ó導P一切困Ãø的根源¡C今天¡AUNIX系統之所以³Q廣泛使用¡A最主n歸因於大¶q的免付¶O³nÅé在各式各樣的硬Åé環境下³£¯à夠¶¶利地¹B作¡C二十多年以來¡ABerkeley Source Distribution的主目標即在於推動系統的¶}放性»P分散式控制¡Cªñ年來¡A只有Unix系統在Posix.1»PX/Open的努力之下¡A完成了大³W模的標準化¡C不¹L¡AUnix系統的¶}放性作業環境Áö然¹ª勵了各式各樣的創新¡A卻也ªý礙了系統的標準化¡C³o實在是一種兩Ãø的局±¡G¶}放式的系統環境使得各個»s³y商具有相當程度的¦Û主性¡A大幅提°ª了系統的可接受度¡A但是卻又無法¹F到½Ñ如DOS 以及Windows 等專屬系統所特有的接受程度¡C究其原因¡A則n歸咎源¦Û其產品本½è內的Áô含標準¡C 應用程式的分Ãþ 程式移植所»Ýªá¶O的功夫完全取決於目標應用程式本¨的目的和½ÆÂø度¡Cº先¦Ò慮的就是使用ªÌ操作介±的問ÃD¡A基本上»¡¡A在³o方±有兩種不同的形式¡G 文字介±的應用程式 圖形使用ªÌ介±¡]GUI¡^的應用程式 在程式移植作業中¡A一¯ë文字介±的應用程式只是將單純的文字¸ê料¿é出¦Ü控制台¡A故所¾D¹J的ÃøÃD比¸û少¡C°£«D在某種指令批次檔¡]shell scripts¡^檔或ªÌ應用程式利用到°ª¶¥終端機特性¡A或直接呼叫或是經由Ãþ似Curses的程式庫呼叫時¡A才»Ýn¸û½ÆÂø的³B理¡C往後我們會°w對³o些¶µ目再做¶i一步的»¡明¡C 一¯ë來»¡¡AGUI應用程式採用了Xlib以及Motif 專用圖形化工具組¡]widget¡^¡A因此對於和使用ªÌ之¶¡的互動作業¡A¯à夠提供相當½ÆÂø的控制以及強大的功¯à¡C此³B的移植¹L程儘可¯à使³o些結構ÅÜ成為»P32位元µø窗應用程式介±對等的程式¡C不¹L³o在技³N上»P在外Æ[上¡A³£是一大挑戰¡CÁö然在使用模擬³nÅé的某些情況下¡A可以節省程式移植的功夫¡A但是也得付出執¦æ效率低¸¨以及增加系統½ÆÂø度的代價¡C並且幾乎所有的GUI程式³£得n«寫¡C ³q常缺乏使用ªÌ介±¦Ó單純只是為其他程式提供服務的應用程式¡A會³y成另Ãþ的問ÃD¡C伺服器應用程式³q常利用³B理程序¶¡³q°T¡]Interprocess Communication¡^或ªÌ³z¹L網¸ô¡A以從執¦æ¹L程直接傳°e¸ê料或ªÌ接收¸ê料¡A³o些³B理程序¡]process¡^甚¦Ü可¯à是來¦Û網¸ô上的»·端¹q¸£³]備¡C所以程式移植的困Ãø度會ÀH程式所提供的服務不同¦Ó有²ö大的差異¡A³o完全取決於Windows NT系統環境下特定的服務功¯à¡B所提供的¸ê源以及可用的支援¡CUnix系統下的daemonÃþ似於NT中的服務¡]service¡^¡C在第五章的¡uWindows NT的系統架構¡v¸Ì¡A將¶i一步的°Q½×Ãö於服務控制管理的程式¡C 某些應用程式一ÂI³£不¾A合移植¡C如果你很挑剔系統回應以及³B理效¯à的問ÃD¡A則您恐怕得n慎«的¦Ò慮«寫³o些程式¡C甚¦ÜÁÙn去熟悉 Windows NT作業環境下的系統效¯à分析及低¶¥°£¿ù工具¡C Win16¡AWin32¡A»PUnix Windows 3.1 架構的主n特徵是¡A它在DOS作業系統上執¦æ並將其功¯à擴充¡A故基本上它只是一個¡uDOS擴展程式¡v¡]DOS Extender¡^¦Ó已¡C一¯ë程式³]p師所使用的系統介±¡A也就是所¿×的16位元µø窗應用程式介±¡]Win16¡^¡A是在16位元80286模式下執¦æ¡CWin16的應用程式Y在°O憶Åé的區段式位址空¶¡中操作¡A則最大的區段位址ªø度只有64KB¡C則在³o種³]p環境下的程式³£有一種特性¡A¨º就是一旦程式»Ýn使用大¶q的°O憶Åé或ªÌ應用程式»Ýn用到¶W¹L 64K的°O憶Åé容¶q¡A就必¶·時常«¸ü區段暫存器¡C Win16的應用程式Y在°O憶Åé的單位址空¶¡下執¦æ¡A¦Ó此空¶¡是由系統以及所有其他的執¦æ中的程式所分享出來的¡C則其¸ê源分派的方式稱為合作式排程¡]cooperative¡^¡Aªí示只有當程式¦ÛÄ@放棄系統控制權¦Ó¶i¦æ內容切換¡A才有可¯à½ü到別的應用程式執¦æ¡C³o種合作式多工作業環境對於具有即時»Ý求的應用程式¦Ó¨¥¡A是極大的缺³´¡C此外¡A共享位址空¶¡的做法會由於其中任何一個正在執¦æ程式的¿ù»~¦Ó易於³y成所有應用程式的損害¡A¶i¦Ó°低整個的系統可¾a度¡C 相對來»¡¡AWindows NT是一種以微核心¡]microkernel¡^為基礎的作業系統¡A並且支援°O憶Åé位址空¶¡保Å@¡B可岔斷式多工作業¡]preemptive multitasking¡^¡B以及多«程式³W劃介±¡A其中包括MS-DOS¡BWin16¡B某些Posix»PXPG3介±¡B以及Win32介±¡C 目前您所°w對的作業系統應¸Ó是某個版本的Widows NT¡F在本書中將n探°Q的對¶H會更廣泛¡C對於程式移植或«新³W劃流程¦Ó¨¥¡A很多的概念可¯à»P其他的作業系統如µø窗95/98 互有Ãö³s¡CÁö»¡在Windows NT¡BWin32 系統環境下的Win32 API常式以及大³¡分具有相同使用ªÌ介±的元件¡Aµø窗 95/98的應用程式³£可加以利用¡C不¹L因為³B理程序結構¡B登¿ý檔用法¡B安全性»P其他作業系統特性的不同¦Ó可¯à有些³\差異¡A但是目前微³n公司正策略性地°w對具網¸ô功¯à的系統以及應用程式³]p層¶i¦æ整合¡C到目前為止¡A³o兩種作業系統的¸Ë置ÅX動程式仍然有µÛ相當程度的差異¡C因此在¶i¦æ³o個層次的程式移植作業時¡A仍然»Ýnªá¶O一番功夫¡C 以下內容節¿ý於本書第一章的最後一節 Á×免常¨£的³´¨À 本節將¶°中焦ÂI在一些已經是相當標準化的系統結構上¡A像是對於°T¸¹³B理¡]signal handling¡^以及和系統安全性相Ãö的功¯à¡A¦Ó³o些功¯à在 Windows NT ¸Ì³£有µÛ«D常ÅãµÛ的差異¡C如果您正準備將一個無法和目前已經³Q公»{為標準³W格的系統如 Posix.2 或是 XPG3等完全相容的ÂÂ系統移植到 NT¡A則必¶·n採取一些ÃB外步ÆJ¡A才有可¯à成功的完成移植作業¡C最好是¯à夠從一個已知的狀態移植到另外一個已知的狀態¡A並且儘可¯à的使您的程式完全°t合標準化的環境¡C 在³o³B理¹L程中最«n的³¡份¡A就是必¶·³W劃您的執¦æ程序¡A儘¶q°t合移植來源或目標系統環境中定義不明確的系統標ÀY檔¡A但是並不建ij完全拘於所有的標準環境¡CÁ|例來»¡¡A根據 Stevens 的»¡法¡]1992¡^¡A包括°T息佇列在內的System V IPC在XPG3¸Ì有明確的定義¡A但是在NT中卻根本沒有°T息佇列¡A甚¦Ü於在不同Unix 版本¶¡¶i¦æ移植作業時ÁÙ會彼此½Ä突¡C就Åý我們根據一些發生在¹L去的½Ä突事件來感受一下我們將會±Á{的問ÃD¡C 我¦Û己就有一個有ÃöBSD應用程式和移植系統¶¡因°T¸¹¸ÑĶ不同¦Ó引°_½Ä突的經Åç¡C主n的問ÃD出在當系統正在³B理一個系統呼叫作業的時候¡A應用程式的執¦æ方式乃和系統°T¸¹的性½è有Ãö¡C換句¸Ü»¡¡A系統會以應用程式的名義去執¦æ核心程式中的有Ãö³¡份¡C在¹w³]狀態下¡AY是系統呼叫³Q某個°T¸¹所中斷¡A則BSD會¦Û動將它«新啟動¡Q但是在一些特殊的情況下¡ASystem V以及 Posix 系統的¹w³]狀態常常會從系統呼叫程式中回應一個¿ù»~°T息¡CÄ´如»¡¡A系統可¯à會從一個¶i¦æ了一半的Ū取作業中回ªð¡C您應¸Ón修q³o個程式的³B理ÅÞ¿è以°t合目前的作業標準¡]System V模式¡^¡A¦Ó不是幻想n建立一組模擬 BSD型態的作業°T¸¹¡C 您移植的應用程式甚¦Ü可¯à無法正常操作¡AÄ´如¡A筆ªÌ就不只一次的¹J到¹L一些在市場上»á有名氣的應用程式¡A竟然從°T¸¹³B理程式呼叫了一個¡u不安全¡v的執¦æ程式庫功¯à¡C³o種做法«D但不符合標準¡A同時ÁÙ具有破壞性的¡C但是他們卻忽µø了³o一ÂI¡CY是一個程式庫中的常式¶i¦æ了Ãþ似 malloc 的呼叫¡A就應¸Ó³Q禁止使用¡C¸Õ想¡AY是在執¦æ前一次的 malloc 呼叫期¶¡收到了另一個°T¸¹¡A³o會產生什»ò後果¡H答案是在某些時候會由於系統內³¡的°O憶堆疊中的¸ê料結構並未加以¾A當的保Å@¡A¦Ó導P¸ê料的毀損¡CÀH後整個程式會當掉¡]或是更糟¡^¡C 可是¡A³oÃþ問ÃD的發生往往是無法¹w知的¡A同時也有可¯à會³Q掩»\住¡A根據時¶¡性來¦Ò慮的¸Ü¡A有時可¯àn等上幾年才發生¡C在準備或是¶i¦æ³oÃþ應用程式的移植作業的時候¡A您有必n找出³o種ÁôÂÃ性或是潛伏性的缺ÂI¡A作ªÌ將³oÃþ型的問ÃD稱之為“bogons”¡C ¸Õ圖找出°O憶Åé的故»Ù所在實在是痛W的根源¡C初學ªÌ應¸Ón瞭¸Ñ¦Ü少可以³z¹L兩種不同的界±程式去使用°O憶堆疊¡G¨º就是malloc程式庫實作和LocalAlloc常式¡C千¸Un°O得作業結束後應分別使用free及LocalFree呼叫¡AÂÇ以ÄÀ放°O憶Åé¡C事實上¡A您應¸Ó仔細的檢µø程式中的°O憶Åé°t置ÅÞ¿è¡C儘可¯à的將您的¸ê料分¶}°t置到¹jÂ÷的堆疊區¸Ì¡A同時在³]p的¹L程中使用°£¿ù°t置程式¡C使用¹jÂ÷的堆疊區可以監督並且Á×免意外的毀損系統的¸ê料結構¡A以後只n有任何問ÃD的發生¡A很明Åã的¡A毛病一定是出在您的程式¡C在程式仍然³B於測¸Õ¶¥段的時候使用°£¿ù程式¡A以協助您一段一段的清理程式的內容¡C °£了在本書中所提出的各種¸ê料之外¡A儘可¯à多方±的去瞭¸ÑUnix 之¶¡可移植性的相Ãö問ÃD¡AÂÇ以使您更¶i一步的熟悉整Åé的作業情況¡A³o將會是一種«D常好的方法¡C在下一章¸Ì¡Aº先會提出一些簡單的問ÃD¡AÂǵ۳o些問ÃD的引導¡A¶i一步的°Q½×在 Unix 到 Windows NT 的應用程式移植作業當中所¾D¹J到的問ÃD及其¸Ñ決方法¡C
30¤Ñºë³q Powe
¹Ï¸ÑLINUX«ü¥O¾Þ
LinuxÀH¨«ü«n¡G
³Ì¨Î©çÀɧ¹¥þÅé- L
Windows 11
¯u¥¿¤F¸Ñ®Ö¤ß¡GLin
¸ò§Ú¾ÇWindows
µ´¹ïµw¬£¡GWindo
¶W¹ê¥Î¡IWord¡DE
Excel 365°Ó
¬°¤F«O»Ù±zªºÅv¯q¡A·sµ·¸ôºô¸ô®Ñ©±©ÒÁʶRªº°Ó«~§¡¨É¦³¨ì³f¤C¤ÑªºÅ²½à´Á¡]§t¨Ò°²¤é¡^¡C°h¦^¤§°Ó«~¥²¶·©óŲ½à´Á¤º±H¦^¡]¥H¶lÂW©Î¦¬°õÁp¬°¾Ì¡^¡A¥B°Ó«~¥²¶·¬O¥þ·sª¬ºA»P§¹¾ã¥]¸Ë(°Ó«~¡Bªþ¥ó¡B¤º¥~¥]¸Ë¡BÀH³f¤å¥ó¡BÃØ«~µ¥)¡A§_«h®¤¤£±µ¨ü°h³f¡C