Ⅰ 《linux內核完全注釋》pdf下載在線閱讀,求百度網盤雲資源
《Linux內核完全注釋》趙炯電子書網盤下載免費在線閱讀
鏈接: https://pan..com/s/1mBDNKaaiC0Wh-ZC3iezRSw
書名:Linux內核完全注釋
作者名:趙炯
豆瓣評分:6.3
出版社:山西人民出版社
出版年份:2012-4
頁數:227
內容介紹:
從被發現的第一天起,墨菲定律就被證明是對事情出錯的最好解釋。它告訴我們,容易犯錯是人類與生俱來的弱點,不論科技多發達,錯誤都會發生。而且我們解決問題的手段越高明,面臨的麻煩就越嚴重。這本獨特的合集是迄今收錄墨菲定律最多的版本,在國外每年都有再版,此版除了一如既往地收集了墨菲定律的最佳注釋之外,還加入了21世紀之後的最新變化,證明隨著科技的進步,更多的事情會出錯。
作者介紹:
(美)阿瑟•布洛赫,墨菲定律最堅定的收集者。幾十年來,一直致力於收集各行各業的墨菲定律,先後出版過幾十本有關墨菲定律的著作,印數達上百萬冊。使墨菲定律在美國及歐洲各國幾近家喻戶曉。
Ⅱ 有沒有Linux內核源碼指導書籍
1.《Linux內核設計與實現》
本書重在原理。適合入門的最佳圖書。作者是為2.6內核加入了搶占的人,對調度部分非常精通,而調度是整個系統的核心,因此本書是很權威的。
2.《深入理解Linux內核》
此書比上一本多了些細節。是Linux內核黑客在推薦圖書時的首選。寫的比較簡單易懂,適合剛剛接觸LINUX內核的。
此書圖表很多,形象地給出了關鍵數據結構的定義,與《Linux內核源代碼情景分析》相比,本書內容緊湊,不會一個問題講解動輒上百頁,有提綱挈領的功用,但是深度上要遜於《Linux內核源代碼情景分析》。
3.《LINUX設備驅動程序(第3版)》
這書強調動手實踐!但它是講解「設備驅動」的,不是最核心的東西,而且有些東西沒硬體的話無法實踐,可能更適合驅動開發的程序員吧
其中關於同步與互斥、內存分配的部分,感覺很不錯。
4.《Linux內核源代碼情景分析》
好,很經典,是浙大教授毛德操寫的,可惜成書於2001年之後一直沒有更新。分上下冊。
很多是基於2.4內核講解的需要注意。如果學習的話也建議學習2.6,2.6跟2.4比發生了很多顯著改善,應該學習的。
全書內容博大精深,不是非常好懂,對細節問題描述比較清晰。但是感覺對內核的整體感覺不夠強。另外缺少網路部分的分析。覺得不是很適合初學者。
5.《Linux內核源代碼分析》
點評:面對中高級,這本書很好,對了解操作系統是一本不可多得的好書。
6. 《LINUXKERNEL技術手冊》
參考手冊,很薄,值得一看。
7.《深入Linux內核架構》
這本書針對的是比較新的內核版本2.6.24;內容比較全面,深入淺出。
如果沒有對Linux內核的初步結構的認識,那麼會看得比較吃力。建議可以一邊去翻在國內已經聞名已經久的四本Linux內核著作(《Linux內核原代碼情景分析》、《Linux內核設計與實現》、《深入理解Linux內核》、《Linux設備驅動程序》),再一邊看這本書,把這本書當作一個補充或者當作一個內核框架圖譜說明書來閱讀,收效會更好。
8.《Linux內核完全注釋》
主要描述和注釋了Linux0.11內核全部源代碼。對於初學Linux內核操作系統的人來講,該書能夠引領讀者快速入門,並且能全面了解一個簡單操作系統的工作機理。對於進一步學習現在的Linux內核具有非常大的指導作用。對於學習嵌入式應用的技術人員來講,通過《完全注釋》一書的學習也能迅速融入嵌入式應用領域。
9.《Orange S:一個操作系統的實現》
從只有二十行的引導扇區代碼出發,一步一步地向讀者呈現一個操作系統框架的完成過程。
Ⅲ 《linux內核注釋權威》pdf下載在線閱讀全文,求百度網盤雲資源
《linux內核注釋權威》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/15IP9Ywnfh93BOWzdw8dPmg
Ⅳ Linux內核API完全參考手冊的目錄
前言 本書使用方法第1章 Linux內核API分析必備知識 1Linux內核編程注意事項 1本書中模塊編譯Makefile模板 1內核調試函數printk 2內核編譯與定製 4溫馨提示 10參考文獻 11第2章 Linux內核模塊機制API 12函數:__mole_address ( ) 12函數:__mole_ref_addr ( ) 14函數:__mole_text_address ( ) 16函數:__print_symbol ( ) 18函數:__symbol_get ( ) 20函數:__symbol_put ( ) 22函數:find_mole ( ) 24函數:find_symbol ( ) 27函數:mole_is_live ( ) 30函數:mole_put ( ) 32函數:mole_refcount ( ) 34函數:sprint_symbol ( ) 36函數:symbol_put_addr ( ) 38函數:try_mole_get ( ) 40函數:use_mole ( ) 42參考文獻 44第3章 Linux進程管理內核API 45函數:__task_pid_nr_ns( ) 45函數:find_get_pid( ) 47函數:find_pid _ns( ) 49函數:find_task_by_pid_ns( ) 51函數:find_task_by_pid_type _ns( ) 53函數:find_task_by_vpid( ) 55函數:find_vpid( ) 57函數:get_pid( ) 59函數:get_task_mm( ) 60函數:is_container_init( ) 63函數:kernel_thread( ) 65函數:mmput( ) 67函數:ns_of_pid( ) 69函數:pid_nr( ) 71函數:pid_task( ) 73函數:pid_vnr( ) 75函數:put_pid( ) 77函數:task_active_pid_ns( ) 79函數:task_tgid_nr_ns( ) 81參考文獻 83第4章 Linux進程調度內核API 84函數:__wake_up( ) 84函數:__wake_up_sync( ) 87函數:__wake_up_sync_key( ) 89函數:abort_exclusive_wait( ) 91函數:add_preempt_count( ) 95函數:add_wait_queue( ) 97函數:add_wait_queue_exclusive( ) 100函數:autoremove_wake_function( ) 102函數:complete( ) 106函數:complete_all( ) 108函數:complete_done( ) 111函數:current_thread_info( ) 113函數:default_wake_function( ) 115函數:do_exit( ) 118函數:finish_wait( ) 120函數:init_waitqueue_entry( ) 123函數:init_waitqueue_head( ) 125函數:interruptible_sleep_on( ) 127函數:interruptible_sleep_on_timeout( ) 130函數:preempt_notifier_register ( ) 133函數:preempt_notifier_unregister ( ) 136函數:prepare_to_wait( ) 139函數:prepare_to_wait_exclusive( ) 142函數:remove_wait_queue( ) 146函數:sched_setscheler( ) 149函數:set_cpus_allowed_ptr( ) 152函數:set_user_nice( ) 155函數:sleep_on( ) 158函數:sleep_on_timeout( ) 160函數:sub_preempt_count( ) 162函數:task_nice( ) 164函數:try_wait_for_completion( ) 166函數:wait_for_completion( ) 169函數:wait_for_completion_interruptible( ) 172函數:wait_for_completion_interruptible_ timeout( ) 175函數:wait_for_completion_killable( ) 179函數:wait_for_completion_timeout( ) 182函數:wake_up_process( ) 184函數:yield( ) 187參考文獻 188第5章 Linux中斷機制內核API 189函數:__set_irq_handler( ) 189函數:__tasklet_hi_schele( ) 191函數:__tasklet_schele( ) 194函數:disable_irq( ) 196函數:disable_irq_nosync( ) 196函數:disable_irq_wake( ) 198函數:enable_irq( ) 201函數:enable_irq_wake( ) 203函數:free_irq( ) 205函數:kstat_irqs_cpu( ) 207函數:remove_irq( ) 209函數:request_irq( ) 213函數:request_threaded_irq( ) 216函數:set_irq_chained_handler( ) 219函數:set_irq_chip( ) 221函數:set_irq_chip_data( ) 225函數:set_irq_data( ) 227函數:set_irq_handler( ) 229函數:set_irq_type( ) 232函數:set_irq_wake( ) 234函數:setup_irq( ) 237函數:tasklet_disable( ) 239函數:tasklet_disable_nosync( ) 241函數:tasklet_enable( ) 243函數:tasklet_hi_enable( ) 244函數:tasklet_hi_schele( ) 246函數:tasklet_init( ) 248函數:tasklet_kill( ) 250函數:tasklet_shele( ) 252函數:tasklet_trylock( ) 254函數:tasklet_unlock( ) 255參考文獻 257第6章 Linux內存管理內核API 258函數:__free_pages( ) 258函數:__get_free_pages( ) 258函數:__get_vm_area( ) 260函數:__krealloc( ) 262函數:alloc_pages( ) 265函數:alloc_pages_exact( ) 268函數:alloc_vm_area( ) 270函數:do_brk( ) 272函數:do_mmap( ) 273函數:do_mmap_pgoff( ) 276函數:do_munmap( ) 279函數:find_vma( ) 281函數:find_vma_intersection( ) 284函數:free_pages( ) 286函數:free_pages_exact( ) 287函數:free_vm_area( ) 288函數:get_unmapped_area( ) 288函數:get_user_pages( ) 290函數:get_user_pages_fast( ) 292函數:get_vm_area_size( ) 294函數:get_zeroed_page( ) 295函數:kcalloc( ) 297函數:kfree( ) 299函數:kmalloc( ) 299函數:kmap_high( ) 301函數:kmem_cache_alloc( ) 303函數:kmem_cache_create( ) 305函數:kmem_cache_destroy( ) 308函數:kmem_cache_free( ) 308函數:kmem_cache_zalloc( ) 309函數:kmemp( ) 311函數:krealloc( ) 313函數:ksize( ) 315函數:kstrp( ) 318函數:kstrnp( ) 319函數:kunmap_high( ) 321函數:kzalloc( ) 321函數:memp_user( ) 323函數:mempool_alloc( ) 325函數:mempool_alloc_pages( ) 327函數:mempool_alloc_slab( ) 329函數:mempool_create( ) 331函數:mempool_create_kzalloc_pool ( ) 333函數:mempool_destroy( ) 334函數:mempool_free( ) 335函數:mempool_free_pages( ) 335函數:mempool_free_slab( ) 336函數:mempool_kfree( ) 336函數:mempool_kmalloc( ) 337函數:mempool_kzalloc( ) 339函數:mempool_resize( ) 341函數:nr_free_buffer_pages( ) 343宏:page_address( ) 345宏:page_cache_get( ) 346宏:page_cache_release( ) 348函數:page_zone( ) 349宏:probe_kernel_address( ) 352函數:probe_kernel_read( ) 354函數:probe_kernel_write( ) 355函數:vfree( ) 357函數:vma_pages( ) 358函數:vmalloc( ) 359函數:vmalloc_to_page( ) 361函數:vmalloc_to_pfn( ) 363函數:vmalloc_user( ) 365參考文獻 366第7章 Linux內核定時機制API 368函數:__round_jiffies( ) 368函數:__round_jiffies_relative( ) 369函數:__round_jiffies_up( ) 371函數:__round_jiffies_up_relative( ) 373函數:__timecompare_update( ) 375函數:add_timer( ) 377函數:current_kernel_time( ) 378函數:del_timer( ) 380函數:del_timer_sync( ) 382函數:do_gettimeofday( ) 384函數:do_settimeofday( ) 386函數:get_seconds( ) 388函數:getnstimeofday( ) 390函數:init_timer( ) 391函數:init_timer_deferrable( ) 393函數:init_timer_deferrable_key( ) 395函數:init_timer_key( ) 398函數:init_timer_on_stack( ) 400函數:init_timer_on_stack_key( ) 402函數:mktime( ) 404函數:mod_timer( ) 406函數:mod_timer_pending( ) 408函數:ns_to_timespec( ) 410函數:ns_to_timeval( ) 412函數:round_jiffies( ) 414函數:round_jiffies_relative( ) 416函數:round_jiffies_up( ) 418函數:round_jiffies_up_relative( ) 420函數:set_normalized_timespec( ) 422函數:setup_timer( ) 424函數:setup_timer_key( ) 426函數:setup_timer_on_stack( ) 428函數:setup_timer_on_stack_key( ) 430函數:timecompare_offset( ) 432函數:timecompare_transform( ) 435函數:timecompare_update( ) 436函數:timer_pending( ) 439函數:timespec_add_ns( ) 441函數:timespec_compare( ) 442函數:timespec_equal( ) 444函數:timespec_sub( ) 446函數:timespec_to_ns( ) 448函數:timeval_compare( ) 450函數:timeval_to_ns( ) 452函數:try_to_del_timer_sync( ) 453參考文獻 456第8章 Linux內核同步機制API 457函數:atomic_add( ) 457函數:atomic_add_negative( ) 458函數:atomic_add_return( ) 460函數:atomic_add_unless( ) 461宏:atomic_cmpxchg( ) 463函數:atomic_dec( ) 464函數:atomic_dec_and_test( ) 466函數:atomic_inc( ) 467函數:atomic_inc_and_test( ) 469宏:atomic_read( ) 470宏:atomic_set( ) 471函數:atomic_sub( ) 472函數:atomic_sub_and_test( ) 474函數:atomic_sub_return( ) 475函數:down( ) 477函數:down_interruptible( ) 479函數:down_killable( ) 481函數:down_read( ) 483函數:down_read_trylock( ) 485函數:down_timeout( ) 487函數:down_trylock( ) 489函數:down_write( ) 491函數:down_write_trylock( ) 492函數:downgrade_write( ) 494宏:init_rwsem( ) 496宏:read_lock( ) 498函數:read_seqbegin( ) 499函數:read_seqretry( ) 500宏:read_trylock( ) 503宏:read_unlock( ) 504宏:rwlock_init( ) 505函數:sema_init( ) 508宏:seqlock_init( ) 509宏:spin_can_lock( ) 511宏:spin_lock( ) 513宏:spin_lock_bh( ) 514宏:spin_lock_init ( ) 516宏:spin_lock_irq( ) 518宏:spin_lock_irqsave( ) 520宏:spin_trylock( ) 522宏:spin_unlock( ) 525宏:spin_unlock_bh( ) 526宏:spin_unlock_irq( ) 526宏:spin_unlock_irqrestore( ) 527宏:spin_unlock_wait( ) 527函數:up( ) 529函數:up_read( ) 531函數:up_write( ) 532宏:write_lock( ) 532函數:write_seqlock( ) 534函數:write_sequnlock( ) 534宏:write_trylock( ) 535宏:write_unlock( ) 537參考文獻 537第9章 Linux文件系統內核API 539函數:__mnt_is_readonly( ) 539函數:current_umask( ) 541函數:d_alloc( ) 542函數:d_alloc_root( ) 544函數:d_delete( ) 547函數:d_find_alias( ) 547函數:d_invalidate( ) 549函數:d_move( ) 550函數:d_validate( ) 551函數:dput( ) 553函數:fget( ) 554函數:find_inode_number( ) 557函數:generic_fillattr( ) 559函數:get_empty_filp( ) 561函數:get_fs_type( ) 563函數:get_max_files( ) 565函數:get_super( ) 566函數:get_unused_fd( ) 569函數:have_submounts( ) 570函數:I_BDEV( ) 572函數:iget_locked( ) 573函數:inode_add_bytes( ) 575函數:inode_get_bytes( ) 576函數:inode_needs_sync( ) 578函數:inode_set_bytes( ) 580函數:inode_setattr( ) 581函數:inode_sub_bytes( ) 584函數:invalidate_inodes( ) 586函數:is_bad_inode( ) 587函數:make_bad_inode( ) 588函數:may_umount( ) 590函數:may_umount_tree( ) 591函數:mnt_pin( ) 593函數:mnt_unpin( ) 594函數:mnt_want_write( ) 596函數:new_inode( ) 596函數:notify_change( ) 598函數:put_unused_fd( ) 600函數:register_filesystem( ) 602函數:unregister_filesystem( ) 604函數:unshare_fs_struct( ) 604函數:vfs_fstat( ) 606函數:vfs_getattr( ) 608函數:vfs_statfs( ) 610參考文獻 613第10章 Linux設備驅動及設備管理API 614函數:__class_create( ) 614函數:__class_register( ) 615函數:cdev_add( ) 616函數:cdev_alloc( ) 617函數:cdev_del( ) 619函數:cdev_init( ) 624宏:class_create( ) 628函數:class_destroy( ) 629宏:class_register( ) 631函數:class_unregister( ) 632函數:device_add( ) 637函數:device_create( ) 638函數: device_del( ) 640函數:device_destroy( ) 640函數:device_initialize( ) 646函數:device_register( ) 652函數:device_rename( ) 652函數:device_unregister( ) 657函數:get_device( ) 663函數:put_device( ) 663函數:register_chrdev( ) 667函數:register_keyboard_notifier( ) 668函數:unregister_chrdev( ) 669函數:unregister_keyboard_notifier( ) 675部分相關函數說明 679參考文獻 679附錄 Linux內核API快速檢索表 680
Ⅳ linux內核編譯詳細教程及開發Linux系統
摘錄linuxaid
一步一步編譯安裝Linux內核
摘要
文章將為你詳細並逐步的描述如何編譯、配置、安裝一個定製的RedHat Linux內核。我們知道,一個定製的內核從很多方面來看都是必需的,在此我不再討論這個問題。我只向大家展示如何編譯、配置和安裝一個定製的內核。雖然下面所列步驟主要是針對RedHat Linux用戶,但它也同樣適用於其它Linux發行版的使用者。當然,一些較小的改動是必須的(例如,並不是所有的系統都使用initrd)
(2002-09-02 12:38:46)
By Wing, 出處:藍風
摘要
文章將為你詳細並逐步的描述如何編譯、配置、安裝一個定製的RedHat Linux內核。我們知道,一個定製的內核從很多方面來看都是必需的,在此我不再討論這個問題。我只向大家展示如何編譯、配置和安裝一個定製的內核。雖然下面所列步驟主要是針對RedHat Linux用戶,但它也同樣適用於其它Linux發行版的使用者。當然,一些較小的改動是必須的(例如,並不是所有的系統都使用initrd)
硬體配置
下列步驟需在一個下列配置的計算機系統中演示:Compaq Presatio 4010 Series cinorter system,15.5GB硬碟,96 MB內存,400 MHz Intel Celeron Processorm ,Red Hat Linux 7.0(內核版本為2.2.16-22)
目標
我們的目標是在進行完下列步驟後得到一個完全運行的定製過的內核,例如,我有一個 定製過的內核2.2.16-22ghosh在我的系統中運行(我的名字叫Subhasish Ghosh,你也可以命名為其它名稱,事實上在系統中有兩個內核是同時運行的)下面,搜索並編譯Linux內核。
編譯、配置並安裝一個定製的RedHat Linux內核的步驟:
整個步驟如下:
步驟1:以「root"身份登錄,然後執行下列步驟
步驟2:在命令提示中鍵入 "rpm-q kernel-headers kernel-source make dev86"
步驟3:如果這些rpm包已經裝好,直接進入步驟4。否則,掛載上RedHat Linux 7.0 光碟並執行rpm-Uvh以便安裝這些必須的rpm包。
步驟4:如果你已有一個完全運行的X window System,那麼在命令提示中鍵入「startx」。如果沒有配置X window System,那麼在命令提示中鍵入「make config」或者「make menuconfig」。
步驟5:進入GNOME環境,打開GNOME終端並鍵入「cd /usr/src/linux」然後回車。
步驟6:在/usr/src/linux 目錄下,鍵入「make xconfig」。
步驟7:屏幕上將出現GUI版本的「make config",它將提供給你不同選項使你獲得一個定製的內核。
步驟8:現在,我建議你盡量使用預設設置。請注意不要輕易改變選項,因為許多選項非常敏感,需要專業處理,你僅需要做以下改動:
1.處理器型號和特徵:選擇正確的處理器取決於你是否使用Pentium Ⅱ或者Pentium Ⅲ,或像我一樣使用Intel Celeron.例如,我操作如下:
Processor Family:PPro/686MXMaximum Physical Memory:1 GBMath Emulation:YesMTRR:YesSMP:Yes
2.打開文件系統對話框並做以下改動:
例如我是如下選擇的:
DOS FAT fs support:Yes(y)MSDOD fs support:Yes(y)UMSDOS:mVFAT(Window 95) support:Yes(y)NTFS filesystem support (read-only):Yes(y)NTFS read-write support(DANGEROUS):NO(n)
完成以上選擇後,請確認你沒有改變其它選項。以上所有改動是無害的, 不會對你的Linux內核產生壞作用。
3.保存並從主對話框中退出
步驟9:在/usr/src/Linux目錄下執行"ls -al".
步驟10:你將看到一個名為"Makefile"的文件,它對整個編譯過程非常重要。因此,一定要先使用「cp Makefile Makefile.bak」命令對該文件進行備份。
步驟11:在usr/src/linux 中執行"vi Makefile"。
步驟12:找到EXTRAVERSION並改變它.例如:我將EXTRAVERSION=-22改為EXTRAVERSION="-22grosh".當然,你完全可以任意命名它。
步驟13:保存並退出文件。
步驟14:下列步驟在/usr/src/Linux 目錄下執行。鍵入「make dep clean」回車。
步驟15:鍵入:「make bzImage moles」。這需要花費一些時間。你可以在這段時間休息一會。
步驟16:以上步驟完成後,在/usr/src/Linux/arch/i386/boot目錄下將產生一個「bzlmage」文件。找到這個目錄並檢查「bzlmage」文件是否已經產生.如果上述步驟得到了正確的執行並且在「make xconfig」中的所有選項都選擇正確的話,你一定會看到這個文件。如果沒有這個文件,那麼很遺憾,你得從頭開始。
步驟17:在/usr/src/linux目錄下鍵入「cp ./arch/i386/boot/bzlmage /boot/vmlinuz-2.2.16.22ghosh」並回車。
步驟18:鍵入:「cp System.map /boot/System.map-2.2.16-22ghosh」。
步驟19:鍵入:「make moles install」,回車。你將看見所有的模塊將在一個新的指定目錄下被安裝。
步驟20:鍵入:「mkinitrd /boot/initrd-2.2.16-22ghosh.img2.2.16-22ghosh」。
步驟21:鍵入:「vi /etc/lilo.conf」且隨後加入以下條目
image=/boot/vmlinuz-2.2.16-22ghoshlabel=GhoshKernelinitrd=/boot/initrd-2/2/16-22ghosh.imgroot=/dev/hdc5read-only
步驟22:保存並退出。請注意:在lilo.conf文件中已經按你的要求改變了相應的條目,但重要的一點是根目錄必須是你的系統的根目錄。例如:在我的系統中是在/dev/hde5中。插入你的系統的有關信息。
步驟23:鍵入:「/sbin/lilo -v -v」。
步驟24:閱讀屏幕上的所有信息。假如沒有顯示錯誤,那麼所有的工作就已完成了。Congratulations!
步驟25:鍵入:「/sbin/reboot」或「/sbin/shutdowm-r now」重新開機。
步驟26:在啟動屏中,按Tab鍵(如果你使用的是LILO啟動屏,可按 ctrl-X 鍵),你可以看見與其它選項一同出現的「GhoshKernel」選項。
步驟27:鍵入:GhoshKernel,回車。完全運行的定製內核就被引導裝入系統中了。
終曲
以「root」身份登錄,鍵入「uname -r」然後回車。你會在屏幕上看到2.2.16-22ghosh條目,它表示你正在運行定製過的內核,而不是2.2.16-22的內核版本。記住你可以在一個計算機中運行多個不同版本的內核。如果你遇到了問題,發E-mail給我,郵箱是:[email protected]。
資源
在許多Web站點里都有關於如何編譯和運行最優化的定製內核的信息。例如http://www.vmlinuz.nu/。還有一些其它的關於Linux內核的使用和編譯的站點。
Ⅵ Linux內核API完全參考手冊的內容簡介
linux作為源碼開放的操作系統已經廣泛應用於計算機與嵌入式設備,因此學會linux內核開發與編程顯得越來越重要。本書以最新的linux內核版本2.6.30為依據,對常用的內核api作了系統分析和歸納,設計了典型實例並對開發場景進行了詳細講解。本書中分析的內核api模塊包括:內核模塊機制api、進程管理內核api、進程調度內核api、中斷機制內核api、內存管理內核api、內核定時機制api、內核同步機制api、文件系統內核api和設備驅動及設備管理api。
本書立足linux內核api分析,深入實踐,內容翔實,讀者可以從低起點進行高效的內核分析與編程實踐。本書可作為高等院校計算機、電子、信息類大學生及研究生進行linux操作系統學習和編程的教材或參考書,也可作為linux開發人員和廣大linux編程開發愛好者的參考用書。