原创 linux中對EINTR錯誤的處理

慢系統調用(slow system call):此術語適用於那些可能永遠阻塞的系統調用。永遠阻塞的系統調用是指調用有可能永遠無法返回,多數網絡支持函數都屬於這一類。如:若沒有客戶連接到服務器上,那麼服務器的accept調用就沒有返回的保證

原创 動態鏈接庫之延遲綁定探究

    動態鏈接庫的優點比較明顯,主要集中在節省內存,簡化對程序的管理等,對此感興趣的看官可以去閱讀經典的教材 Linker and Loader,國內也有一本經典的教材,俞甲子 石凡 潘愛民編著的程序員的自我修養,講的也非常好。

原创 select函數的第一個參數爲什麼是最大描述符加1呢

ChinaUnix.net 標題: 一直不明白,select函數的第一個參數爲什麼是最大描述符加1呢? [打印本頁]作者: iw1210    時間: 2013-01-23 18:51     標題: 一直不明白,select函數的第一

原创 TCP 三次握手 四次揮手

TCP的段格式如下圖所示 圖 36.12. TCP段格式 和UDP協議一樣也有源端口號和目的端口號,通訊的雙方由IP地址和端口號標識。32位序號、32位確認序號、窗口大小稍後詳細解釋。4位首部長度和IP協議頭類似,表示TCP協議頭

原创 Unix Socket編程--I/O複用之select模型

一。之前寫過一篇關於併發服務器的處理機制,其內容是這樣的: 考慮到有多個客戶連接的情況下,服務器在收到每一個新的客戶的連接請求時,都會創建一個新的連接套接字,而原來的監聽套接字將保留以繼續監聽後續的連接請求;如果服務器不能立刻接受後來

原创 linux根目錄下各目錄的功能

Linux文件系統採用分層的樹形目錄結構.即在一個根目錄(通常用"/"表示),含有多個子目錄或文件;子目錄下又含有更下級的子目錄或文件信息,一層一層地延伸.構成一棵倒置的樹.   下面就簡單來看看Linux根目錄的子目錄都用來存放什

原创 應用 Valgrind 發現 Linux 程序的內存問題

Valgrind 概述 體系結構 Valgrind是一套Linux下,開放源代碼(GPL V2)的仿真調試工具的集合。Valgrind由內核(core)以及基於內核的其他調試工具組成。內核類似於一個框架(framework),它模擬

原创 printf()用%f輸出double型,scanf用%lf

問:有人告訴我不能在printf中使用%lf。爲什麼printf()用%f輸出double型,而scanf卻用%lf呢? 答:printf的%f說明符的確既可以輸出float型又可以輸出double型。 根據"默認參數提升"規則(在p

原创 Linux /etc/passwd /etc/shadow

/etc/passwd 存放賬戶信息 root:x:0:0:root:/root:/bin/bash jianing:x:1011:100::/home/jianing:/bin/bash username:password:uid

原创 堆排序下標從零開始

下標從0開始好像也影響不大,就是把樹的層次擡高了1,倒還是挺方便的。這時候成爲了“僞二叉堆”

原创 vim 如何對塊進行縮進

1. ESC; 2. shift + v 進入visual line模式; 3. j, k 鍵選擇範圍; 4. 鍵入>(>表示往右TAB,<表示往左TAB); 設置TAB的width: 編輯vimrc,添加set shiftwidth=

原创 關於linux重定向的解析

關於linux重定向的解析apue書中 p64程序清單3.4有4種調用方式及結果---------------------------------------------./a.out 0 < /dev/ttyread only./a.o

原创 信號之signal函數

UNIX系統的信號機制最簡單的接口是signal函數。signal函數的功能:爲指定的信號安裝一個新的信號處理函數。 #include <signal.h> void (*signal(int signo, void (*func)(

原创 分析df和du的區別

  Linux、Unix-Like平臺的用戶都可能會發現,du與df的查詢結果會不一致。最常見的情況就是,df顯示的已使用磁盤佔用率比du統計出來的結果要大很多。   下面說下兩者結果不同的原因,主要是由於兩者計算結果的方式不同。

原创 Grep學習筆記

Grep學習筆記 整理:Jims of 肥肥世家 <[email protected]> Copyright © 2004 本文遵從GPL協議,歡迎轉載、修改、散佈。 第一次發佈時間:2004年7月16日