原创 the implement of system function.

1. We should pay attention that : Line 14 and 15 in 8_22.c was not reached whether the cmdstring is valid or invalid.Be

原创 10_12 sigddset sigdelset 和 sigismember 的實現

一、源代碼: cat -n 10_12.c      1  #include <signal.h>      2  #include <errno.h>      3      4  #define SIGBAD(signo) ((sig

原创 10_6檢測子進程狀態變化的處理函數。所以確實有這種子進程 錯誤

因爲當已經進入信號處理函數裏,說明在子進程裏已經執行了_exit(0),在信號處理函數裏註冊信號SIGCLD的處理函數時,雖然會檢測是否有需要的子進程,可是結果沒有,因爲已經執行_exit(0);所以不會死循環。書中錯。 一、源代碼: c

原创 防止中斷後系統調用重啓動的signal函數。

源代碼: vim 10_19.c #include "apue.h" Sigfunc * signal_intr(int signo,Sigfunc *func) {         struct sigaction act,oact;

原创 用sigsetjmp和siglongjmp 解決從信號處理程序返回後信號仍被屏蔽問題

通過canjump變量提供一種保護機制,使得在jmpbuf尚未由sigsetjmp初始化時,防止調用信號處理函數。 一、源代碼: :cat -n 10_14.c 10_20.c      1  #include "apue.h"    

原创 2016/04/08

1.集散層的主要功能是提供路由選擇、過濾和wan接入,以及在必要時確定如何讓分組進入核心層。 2.接入層控制用戶和工作組對互聯網資源的訪問,有時也稱爲桌面層。 3.csma/cd 載波偵聽多路訪問/衝突檢測。 4.反轉電纜用於在pc和路由

原创 2016/04/15

1.組播是允許一個或多個發送者(組播源)發送單一數據包到多個接受者(一次的,同時的)的網絡技術。組播源把數據包發送到特定組播組,而只有屬於該組播組 的地址才能接收到數據包。組播可以大大節省寬帶,因爲無論有多少個目標地址,在整個網絡任何一

原创 主程序訪問線程的臨時變量

主程序訪問線程的臨時變量時得到的是不可好的數據,該段內存已經被收回。 源代碼:      1  #include "apue.h"      2  #include <pthread.h>      3      4  struct f

原创 10_26 當調用system函數時子進程與父進程對信號的處理,尤其是SIGCHLD

posix.1 標準規定,當在執行system函數時,應該阻止對父進程遞送SIGCHLD信號。 因爲如果不阻止,當system創建的子進程結束時,system調用者可能錯誤的認爲,它自己的一個子進程結束了,從而調用一種wait函數以獲得子

原创 2016/04/19

1.網絡的連接和構成的形態稱爲網絡拓撲。 2.在使用網卡(NIC)的情況下,MAC地址一般會被燒錄到ROM中。 3.MAC 4.生成樹結構通過檢查網絡結構、禁止某些端口的使用可以有效地消除環路。然而,該端口可以作爲發生問題時可繞行的端

原创 pthread_join

需要注意:所使用的存儲返回信息的結構,在調用者完成調用以後,必須仍然有效。 實例程序: #include "apue.h" #include <pthread.h> void * thread1_fun(void *arg) {    

原创 2016/3/28

1.創建地址池後,必須使用命令 ip natinside source 指定哪些內容本地地址可以使用該地址池。 2.運行在OSI模型的全部七層:網絡管理工作站(NMS)、網關(非默認網關)、服務器和網絡主機。 3.上3層指定了終端中的應用

原创 10_22 sigsuspend 函數實例

#include <signal.h> int sigsuspend(const sigset_t *sigmask); sigsuspend爲原子操作,先解除原先的block信號,然後進程的信號屏蔽字設置爲sigmask,然後掛起,當從

原创 線程的清理函數:pthread_cleanup_push / pthread_cleanup_pop

pthread_cleanup_push 爲塞進即註冊一個清理函數 pthread_cleanup_pop 爲彈出即取消一個清理函數 執行順序與註冊順序相反。 1.源代碼: cat -n 11_5.c      1  #include "

原创 利用設置 還原sigaction和sigprocmask方式實現alarm函數。

設計思路:先替換原先的處理函數然後通過newmask阻塞sigalrm,從susmask裏除去sigalrm,然後利用sigsuspend函數捕捉sigalrm等未阻塞信號,最後獲得剩餘時間,重置handler和mask。 源代碼: ca