原创 APUE 第三版 程序 16-16&16-17 ruptimed (簡單的TCP,C/S 實例)

如有錯誤,歡迎批評指正,本人也是才學APUE的菜鳥 實驗的系統是 Ubuntu 18.04 代碼先貼一下,和書上一樣,沒啥改變 ,主要是爲了沒書的時候看: connect_retry.c // // Created by hjm

原创 信號集與信號屏蔽字 + APUE 第三版 程序10-15(信號設置與 sigprocmask 實例)

如有錯誤,歡迎批評指正,本人也是才學APUE的菜鳥   信號集:可以理解爲是一個整型,其每一個二進制位都代表一種信號。1 表示在這個信號集中,0 表示不在這個信號集中。唯一需要注意的一點:由於不存在編號爲 0 的信號,所以信號編號

原创 APUE 第三版 程序 10-8,10-9 (sleep2 函數的缺陷)

如有錯誤,歡迎批評指正,本人也是才學APUE的菜鳥 /* sleep2 Code*/ #include <setjmp.h> #include <signal.h> #include <unistd.h> static jmp

原创 APUE 第三版 程序10-10 帶時間限制調用 read (alarm解低速系統調用阻塞)

如有錯誤,歡迎批評指正,本人也是才學APUE的菜鳥 程序代碼: #include "apue.h" static void sig_alrm(int); int main(void) { int n; char line[

原创 APUE 第三版 程序 10-20 (sigsetjmp 與 siglongjmp,及程序的問題??)

如有錯誤,歡迎批評指正,本人也是才學APUE的菜鳥 實驗的系統是 Ubuntu 18.04      書中在這一節一開始就提到了一句話:當捕捉到一個信號時,進入信號捕捉函數,此時當前信號被自動地加到進程的信號屏蔽字中。    接着

原创 APUE 第三版 程序 9-12 (創建孤兒進程組)

  孤兒進程組的定義:該進程組的每個成員的父進程要麼是該組的成員,要麼在其它會話中。   孤兒進程組的特點: 如果一個進程組包含一個或一個以上的停止的進程,當該進程組變成孤兒進程組時,該進程組中的每一個進程都會接收到一個 SI

原创 APUE第三版 程序 10-2 (捕捉 SIGUSR1 和 SIGUSR2 的簡單程序) +自己沙掉踩得坑(注意緩衝方式)

程序代碼: #include "apue.h" static void sig_usr(int); // on handler for both signals int main(void) { if(signal(SIGU

原创 APUE 第三版 程序 8-20 (解釋器文件)

解釋器的形式是: #! pathname[optinal-argument] 解釋器文件是文本文件! 它以下列行的形式開始: #! /bin/sh 其中,/bin/sh 就是解釋器。 需要注意的一點是:解釋器文件需要有可執行

原创 APUE 第三版 程序 8-8 (兩次 fork避免殭屍進程) + 我的ubuntu從字符界面回到圖像界面居然是 ctrl+alt+f2

今天在測試 APUE 對殭屍進程採用兩個 fork 的技巧手段。 其代碼是這樣的: #include "apue.h" #include <sys/wait.h> int main(void) { printf("father

原创 APUE第三版 程序 5-15 (內存流的寫入與沖洗,何時追加 null)

如有錯誤,歡迎批評指正,本人也是才學APUE的菜鳥 先貼上代碼: #include "apue.h" #define BSZ 48 int main() { FILE *fp; char buf[BSZ]; memse

原创 APUE第三版 程序 4-9(umask 與文件模式創建屏蔽字,文件創建時的訪問權限)

如有錯誤,歡迎批評指正,本人也是才學APUE的菜鳥 先貼上代碼: #include "apue.h" #include <fcntl.h> #define RWRWRW (S_IRUSR | S_IWUSR | S_IRGRP

原创 apue.h 安裝與使用

下載: src.3e.tar.gz 解壓 安裝相應庫: sudo apt-get install libbsd-dev 進入到apue.3e目錄,執行: make sudo cp ./include/apue.h /usr/inc

原创 APUE第三版 程序 3-11(利用 fcntl 查看已打開文件的文件狀態標誌)

如有錯誤,歡迎批評指正,本人也是才學APUE的菜鳥 先貼的程序代碼: #include "apue.h" #include <fcntl.h> int main(int argc, char *argv[]) { int va

原创 APUE第三版 程序 4-8(文件訪問權限)

如有錯誤,歡迎批評指正,本人也是才學APUE的菜鳥 先貼上程序代碼: #include "apue.h" #include <fcntl.h> int main(int argc, char *argv[]) { if(arg

原创 STL 源碼剖析:配接器 (stack,queue,插入迭代器,反向迭代器,流迭代器)

​ STL 所提供的各種配接器中,改變仿函數 (functors) 接口者,我們稱爲 function adapter,改變容器 (containers) 接口者,我們稱爲 container adapter,改變迭代器 (ite