回憶昨天內容
一、訊號阻塞
sigprocmask(2) sigset_t
訊號阻塞和訊號忽略的區別
可靠訊號 不可靠
訊號丟失
二、獲取程序的未決訊號集
從未決訊號集中找未決訊號
sigpending(2)
什麼是未決訊號?
三、訊號從產生到處理的整個過程
四、system v ipc
訊息佇列
獲取乙個system v 的key值 ftok(3)
訊息佇列
使用key值獲取訊息佇列的id msgget(2)
使用訊息佇列的id從訊息佇列獲取訊息 或者向訊息佇列傳送訊息
caller define
struct msgbuf
訊息的型別 mtype
接收 msgrcv (2) 拷貝 移除
傳送 msgsnd (2)
檢視訊息 ipcs命令
共享記憶體
訊號量集
今天的內容:
一、共享記憶體
使用鍵值獲取共享記憶體的id
shmget(2)
#include
#include
int shmget(key_t key, size_t size, int shm***);
功能:分配乙個共享記憶體段
引數: key ftok(3)的值
size 指定了共享記憶體段的大小
shm***
ipc_creat
ipc_excl
mode指定了共享記憶體段的許可權
返回值: 成功 返回共享記憶體段的id
失敗 -1 errno被設定
編寫**獲取乙個共享記憶體的id **參見 shmget.c
將共享記憶體段關聯到程序的虛擬位址空間
shmat(2) shmdt(2)
#include
#include
void *shmat(int shmid, const void *shmaddr, int shm***);
功能:將共享記憶體段附加到程序虛擬位址空間
引數:shmid 指定了要操作的共享記憶體段的id
shmaddr 附加到程序虛擬位址的位址 null
shm*** 0
返回值:成功 返回程序的虛擬位址 共享記憶體段附加的位址
錯誤 (void*) -1 errno被設定
int shmdt(const void *shmaddr);
功能:解除關聯
引數:shmaddr 指定了共享記憶體段在程序的附加位址
返回值:成功 0
錯誤 -1 errno被設定
如何檢視本機的ip位址和mac位址?
sudo ifconfig
ip位址(邏輯位址 4個位元組) mac位址(實體地址 6個位元組)
127.0.0.1 本機環迴位址 用來測試網路裝置工作是不是正常。
ip位址 程序監聽的埠
0~65533
1024 以下不要使用
ip位址 有兩部分組成 網路部分 主機部分
子網掩碼
172.168.1.129
255.255.255.0
172.168.1.129/24 子網掩碼前24位全1 與網段做與運算為網路號
172.168.1.0 0~255 全0不能用 網路號 全1不能用 本網段的廣播位址
172.168.1.129/25
255.255.255.128
172.168.1.128 是網路號 最多126臺主機
172.168.1.126/25
172.168.1.0 網路號
子網掩0碼&(與運算)ip位址=網路標識 (網路號)
如果網路標識一樣,那麼屬於同一網段
集線器 只是對電流放大 分用 物理層
交換機 交換的是網幀 鏈路層
路由器 交換的是ip報文 網路層
測試自己的裝置是否正常
ping 127.0.0.1
ping 目標ip
資料的傳輸
跨網段資料的傳輸
區域網內部資料的傳輸
每台機器都有自己的路由表。
route
每台機器還有自己的arp表
arp -a
三 基於tcp的程式設計模型
tcp udp
tcp比較安全可靠的傳輸 傳輸資料之前需要建立連線。開銷比較大。傳輸效率就比較低。
udp 不需要建立連線,象傳送快遞一樣。
面向資料報的 不可靠的 傳輸效率很高。
所謂的可靠和不可靠是相對的。
客戶端和伺服器端的連線。
建立連線的過程。
pa.c
#include#include#include#include#includeint main(int argc,char *ar**)
會發生段錯誤 segmentation fault
pb.c
#include#include#include#include#includeint main(int argc,char *ar**)
shmget.c
#include#include#include#includeint main(int argc,char *ar**)
第十一天作業
第一題 import time import random deffoo print 開始執行。time.sleep random.uniform 1,3 print 執行完畢 return 都結束了 print foo 第二題 import time import random deffoo pr...
python第十一天
函式總結 def func a,b print a,b return a b 四個組成部分 函式名 呼叫函式的依據 函式體 執行函式邏輯的 引數列表 為函式提供內部資源 返回值 將函式執行結果返回給外界 返回值 1 空返回 沒有return或空return 2 一鍵返回 3 多值返回 裝有多個值的元...
實習第十一天
subversion svn 是乙個開源的版本控制系統,也就是說 subversion 管理著隨時間改變的資料。這些資料放置在乙個 資料檔案庫 repository 中。這個檔案庫很像乙個普通的檔案伺服器,不過它會記住每一次檔案的變動。這樣你就可以把檔案恢復到舊的版本,或是瀏覽檔案的變動歷史。日常開...