C語言的學習續

2021-05-25 01:28:05 字數 742 閱讀 7765

這兩天總結寫了乙個linuxc下面的多程序socket通訊的互動程式,收穫良多。特別是對fork程序複製函式有了進一步的了解。同時對socket的處理有了更好掌握:

伺服器端

socket  初始化

bind     與位址的繫結 用到 sockaddr_in

listen   監聽

建立乙個死迴圈

accept 接收乙個請求

fork     複製乙個程序

子程序 返回值0

再次 fork  建立子程序的子程序

返回非零是父程序 推出 exit

孫子程序處理任務(因為其主程序以及死亡,所以其程序有init接管)

主程序waitpid   主程序的子程序很快結束退出,而接管他的子孫程序已經脫離主程序非init程序託管

最後處理善後的接管釋放等動作

客服端比較簡單

直接socket 初始化

sockaddr_in 初始化

connect 連線實現繫結

write 請求

read  請求

有乙個問題在socket通訊的過程中read 和 write 最好指定讀取的資料實際長度,否則可能會出現異常:

1、太短  資料沒讀取全

2、太長 會使得一直在請求 知道timeout在斷開

還有個問題就是write 和 read 並不一定會真實的返回你指定的寫或者讀的資料長度,需要迴圈去處理他。

完畢,下午又要搞php一會兒,無聊……

C語言之random n 續

之前寫拉乙個random n的演算法實現,雖然簡單易懂,但是演算法的效率相對來說不算很高,節省拉空間,只用到拉乙個陣列實現。這個random n的實現用到拉兩個陣列,子函式中的陣列在函式棧銷毀時釋放空間。最好和最壞執行時間都是o n 主要時利用拉空間換時間。具體的 實現如下 include incl...

指向函式的指標(續) C語言

內容 前面寫過 指向函式的指標 c語言 本文將在陣列指標的基礎上對函式的指標 我們先來做個關於陣列的小實驗 include int main void printf a d n a printf a d n a printf a 1 d n a 1 printf a 1 d n a 1 printf...

c語言 巨集中 的用法(續)

如下 不明覺厲。define ext2 debug f,a.特別是其中printf f,a 這樣的用法。google之後在stackoverflow找到了這個問題以及解答。詳細的解答跳轉到了gnu的gcc文件 譯文如下 3.6 variadic macros 可變引數的巨集 乙個巨集可以像乙個函式一...