在看init程序解析過程中,針對子程序終止的時候處理使用了套接字,也就是socket。
socket之前一直沒有概念。只是聽到別人說起,具體用法一概不知道。
socket可以理解成打**,打**的時候,建立了乙個通道,兩邊都可以說話。
socket建立一下子就建立了2個控制代碼,相當於通道兩端,用於讀寫資料,關閉通道用。
建立socket:
int socketpair(int domain,int type,int protocol,int sv[2]);
domain 套接字的網域名稱,
type 套接字的型別;
protocol 套接字的協議;
sv[2]指向接收用於引用套接字檔案描述符的陣列的指標。--sv是包含2個整型值的陣列,每個整型值代表乙個套介面,這個套介面類似於管道中某一端的端點。
通過這個函式就建立了2個能夠相互通訊的套介面。
2個套介面直接通訊通過操作檔案的藉口通過write 、read, close來操作。
close直接關閉了雙向通道,讀和寫;
shutdown可以關閉單向的,只關閉讀,只關閉寫,關閉讀寫;並且shutdown之後,檔案描述符還是可用的,實際還是需要通過close在釋放這個描述符。
這裡經常提到的是,某些需要建立連線才能夠使用,具體socket如何建立連線的,是不是通過這個socketpair建立了連線?是的
在init裡面用到的是,在程序死掉的時候,通過建立的套接字對進行通訊,
訊號安裝函式,在子程序終止的時候,會接收到sigchld訊號。
另外的子程序處理機制會通過收到init程序的訊息,進行某些處理。
init程序建立了很多套接字。
套接字查詢命令:
cat /dev/socket/
網路 socket程式設計的初步了解
應用層通過傳輸層進行資料通訊時,tcp和udp會遇到同時為多個應用程式進行提供併發服務的問題。多個tcp連線或者多個應用程式程序可能需要同乙個tcp協議埠進行傳輸資料,為了區別不同應用程式程序和連線,需要計算機作業系統為應用程式與tcp ip協議互動提供了套接字 socket 的介面,區分不同應用程...
open falcon 學習一二
執行到啟動dashboard的時候一直報錯.env bin python wsgi.py 解決思路是缺少mysql相關包 執行解除安裝mysql python,然後在安裝 建議把dashboard停止,control stop 然後在解除安裝和安裝,否則就會出現我碰到的情況,mysql包一直認不到 ...
搜狗一 二面
今天早上去面的搜狗,一面二面加起來總共兩個小時,感覺就是一直一直寫 複習過的就寫的很順,沒看過的就根本想不出來怎麼做,還是思維不夠靈活啊。c 多型實現機制 epoll工作機制 虛函式和純虛函式的區別 構造 析構函式是否能為虛函式 linux動態鏈結和靜態鏈結 智慧型指標auto ptr,shared...