不推薦使用signal()介面, 推薦使用sigacton();
相關介面:
訊號集處理函式:
int sigemptyset(sigset_t set);
int sigfillset(sigset_t set);
int sigdelset(sigset_t set, int signo);
int sigmember(sigset_t set, int signo);
int sigprocmask(int how, const sigset_t *set, sigset_t *oset);
int sigpending(sigset_t *set);
int sigsuspend(const sigset_t *sigmask);
管道 int pclose(file *stream_to_close);
int pipe(int file_descriptor[2]);
使用檔案描述符時用底層的read()和write()來訪問資料;
使用檔案流時用fread()和fwrite()訪問資料;
i/o重定向
訊號量偽碼:
圖示:
相關介面:
int semop(int sem_id, struct sembuf *sem_ops, size_t num_sem_ops);
int semctl(int sem_id, int sem_num, int command, …)
共享記憶體
void *shmat(int shmid, const void *shmaddr, int shm***);
int shmdt(const void *shmaddr);
int shmctl(int shmid, int cmd, struct shmid_ds *buf);
資訊佇列
int msgctl(int msqid, int cmd, struct msqid_ds *buf);
int msgsnd(int msqid, const void *msgp, size_t msgsz, int msg***);
ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msg***);
互斥量(和二進位制訊號量類似)
訊號量
int sem_wait(sem_t *sem);
int sem_post(sem_t *sem);
int sem_destroy(sem_t *sem)
事件第二遍的時候補**,必要時開新文
程序間通訊與多執行緒同步
常見的程序間通訊方式包括 管道 pipe 共享記憶體 sharedmemory 訊息佇列 messagequeue 訊號量 semaphore socket 套接字 常見的多執行緒同步方式主有 是臨界區 critical section 互斥鎖 mutex 訊號量 semaphore 事件 even...
程序通訊與程序同步
多個程序可以共享系統中的各種資源,但其中許多資源一次只能為乙個程序使用,我們把一次僅允許乙個程序使用的資源稱為臨界資源。許多物理裝置都屬於臨界資源,如印表機等 對臨界資源的訪問必須互斥進行,在每個程序中,訪問臨界資源的那段 稱為臨界區。程序通訊與同步的目的主要有下面 1 資料傳輸 乙個程序需要將他的...
程序間通訊 執行緒同步 概要
關鍵區域。訪問的資源。叫臨界資源,比方印表機。訪問臨界資源的 叫臨界 區域。critical section物件沒有控制代碼,不能被其它執行緒共享。執行緒同步之 critical section 相互排斥量。mutex物件有控制代碼。所以也可用於不同程序的執行緒之間做同步。mutex有超時等待機制。...