原创 Linux中在終端捕獲程序的返回值(return 0和exit(0))

在程序運行結束後,在終端(shell界面)上輸入命令: echo  $? 顯示的即爲上一個程序結束時的返回值(return 1,exit(2),_exit(12)都可以,abort退出時,返回值爲隨機數)。 功能: 可以判斷上一個程序時在

原创 進程間通信時讀寫阻塞的條件

匿名管道(pipe,dup,popen)和套接字(socketpair)中的讀寫操作: 只能親緣間實現通信 注:fd【2】改爲fd【0】。 命名管道(fifo)中的讀寫操作: 建立管道文件,通過管道文件進行通信。可實現非親緣間的通信。

原创 getopt()函數(分析命令行參數)

頭文件: #include <unistd.h> 函數形式: int getopt(int argc, char* argv【】, const char* optstring); 功能: getopt直接分析命令行參數,找到選項和選項參數

原创 線程的信號量

創建: int  sem_init(sem_t* sem,int pshared,unsigned  int  value); sem————信號量對象。 pshared——信號量類型:0爲線程共享;<0爲進程共享。 value———初始

原创 system V 共享內存

頭文件: sys/shm.h 查看: ipcs 共享內存獲取: int shmget(key_t key,size_t size,int shmflg); key: IPC_PRIVATE——親緣間 ftok———————非親緣間 siz

原创 FIFO管道/命名管道(半雙工)

特點: 可以是非親緣進程之間; 讀寫必須同時進行,否則阻塞。 創建命名管道: int mkfifo(pathname,mode); 參數: pathname: 文件路徑(文件必須不存在)。 mode: 模式。 返回值: 0 成功 非0 失

原创 POSIX共享內存(內存映射)

本質: 兩個進程訪問同一個邏輯內存; 直接訪問內存,不用read()/write(),非常方便。 匿名映射文件: 設備 作用 舉例 /dev/zero 永遠輸出0的設備文件

原创 讀寫鎖

作用: (實現文件的讀寫同步)當一個進程正在讀或修改文件的某個部分時,阻止其他進程修改同一文件區。 訪問操作: 寫入鎖——又叫排它鎖 讀取鎖——又叫共享鎖 多進程訪問 (同一個進程訪問只會覆蓋已有的鎖) 已存在鎖 讀取鎖 寫入鎖 無 O

原创 POSIX消息隊列(mq_)

頭文件: mqueue.h 庫: rt--------librt.so 編譯的時候加-lrt 查看POSIX消息隊列所有函數: man mq_overview 結構體: struct mq_attr{ mq_flags; ——標誌: ——

原创 用管道或套接字實現客戶端服務器模型

圖示模型:           主要步驟: 1.客戶端獲取文件路徑,發送到服務器。 2.服務器接收到文件路徑,並且讀取到文件內容,在發送回客戶端。 3.客戶端接收文件內容,並顯示到控制檯。 代碼: 使用兩個FIFO實現客戶服務器

原创 Linux中字符串轉整形數字的函數

Linux內核中提供的一些字符串轉換函數: lib/vsprintf.c 1. unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int

原创 套接字(全雙工)實現進程間通信

特點: sv【0】和sv【1】可讀可寫。每個進程固定用一個接口。 寫數據時:通道不滿不阻塞; 讀數據時:通道里沒數據時阻塞。可用fcntl設置爲非阻塞。 創建: int socketpair(int domain, int type, i

原创 匿名管道 與 命名管道/FIFO管道 的特點

匿名管道: 必須是親緣進程之間。 寫不會阻塞;讀會阻塞。 命名管道: 可以是非親緣進程之間。 讀寫必須同時執行,否則阻塞。 點贊 收藏 分享 文章舉報 C後臺開發從入門到就業

原创 systemV信號量

頭文件: sys/sem.h 查看: ipcs 信號量獲取: int  semget(key,nsems,semflg); key: 命名信號量。 IPC_PRIVATE 和 ftok()兩種方式。 nsems: 信號量數目。 非0——新

原创 線程間的互斥量和條件變量

互斥鎖: PS:互斥鎖的生存週期必須大於用到互斥鎖的線程的生存週期! 靜態分配互斥量: pthread_mutex_t  mutex=PTHREAD_MUTEX_INITIALIZER; 動態分配互斥量: pthread_mutex_in