原创 linux進程的啓動和終止

1. 進程正常終止的5種方式: 1)main函數返回 2)進程調用exit:進入內核前先進行一些清理工作,如調用各種終止程序(這些終止處理程序可以由atexit註冊),關閉標準I/O流等 3)進程調用_exit/_Exit:立即進入內核

原创 進程創建:fork、vfork、clone

轉自:http://blog.csdn.net/zjg555543/article/details/7419098在Linux中主要提供了fork、

原创 Linux tcpdump命令詳解

簡介 用簡單的話來定義tcpdump,就是:dump the traffic on anetwork,根據使用者的定義對網絡上的數據包進行截獲的包分析工具。 tcpdump可以將網絡中傳送的數據包的“頭”完全截獲下來提供分析。它支持針對網

原创 函數指針變量

在C語言中,一個函數總是佔用一段連續的內存區(位於程序的代碼區),而函數名就是函數所佔內存區的首地址。我們可以把函數的這個首地址(或稱入口地址)賦予一個指針變量,使該指針變量指向該函數。然後通過指針變量就可以找到並調用這個函數。我們稱這種

原创 信號

1.信號又稱軟中斷 2.信號的發送   1)一個進程發送給另一個進程(或自身)   2)內核發給進程 3.不可被捕捉、不能忽略的信號:SIGKILL、SIGSTOP 4.信號處理函數執行期間,後續遞交的相同信號將

原创 任務狀態段(Task State Segment)

轉自:http://www.cnblogs.com/guanlaiy/archive/2012/10/25/2738355.html 任務狀態段(Task State Segment)是保存一個任務重要信息的特殊段。任務狀態段描述符用於

原创 Linux下的管道編程技術

管道技術是Linux的一種基本的進程間通信技術。在本文中,我們將爲讀者介紹管道技術的模型,匿名管道和命名管道技術的定義和區別,以及這兩種管道的創建方法。同時,闡述如何在應用程序和命令行中通過管道進行通信的詳細方法。     一、管道技術模

原创 linux task_struct的結構註釋

1. 調度數據成員(1) volatile long states; 表示進程的當前狀態: ? TASK_RUNNING:正在運行或在就緒隊列run-queue中準備運行的進程,實際參與進程調度。 ?TASK_INTERRUPTIBLE:

原创 網絡編程基礎

1.服務器進程如果需要綁定保留端口號,如80 for HTTP,必須以超級用戶運行,否則bind將返回錯誤:PermissionDenied; 2.每個子進程只有一個父進程,且可以使用函數getppid獲

原创 C程序的環境變量列表

該圖截自《UNIX環境高級編程》

原创 linux用戶空間與內核的接口

1.內核提供給用戶層的接口:     1)systemcall    2)procfs命令:virtual filesystem,編譯選項:Filesystems Pseudo filesystems/proc file system

原创 linux內核的通知鏈機制

一、爲什麼需要通知鏈:    linux內核的各個子系統之間往往互相關聯,一個子系統產生或者偵測到的事件,其它的子系統往往也很感興趣,因此linux內核採用了通知鏈機制實現內核的子系統之間的通信需求。值的注意的是,通知鏈機制僅用於內核內部

原创 linux內核register_chrdev_region()系列函數

內核提供了三個函數來註冊一組字符設備編號,這三個函數分別是 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()。其中,register_chrdev_reg

原创 進程控制

1.共享庫:減小可執行文件大小,增加程序的運行時開銷;開銷發生在程序第一次被執行時,或者共享庫函數第一被調用時;gcc組織程序使用共享庫(將共享庫靜態鏈接到可執行文件):gcc-static ex01.c