程序之間的通訊,管道,套接字,共享記憶體,訊號,訊號量等。
套接字適用範圍很廣,用於兩個主機之間的兩個程序的通訊,一台主機的兩個程序也可以進行通訊,例如資料庫,與資料庫建立連線通訊就是和資料庫進行socket通訊。
訊號,如kill向程序傳送訊號,在linux下向程序發松9號訊號用於殺死程序kill -9 pid
訊號量,用於控制程序的同步,使得整個程序間前向推進
共享記憶體,共享的是物理記憶體,兩個程序通過位址對映,對映到相同的一塊位址空間。
管道分為有名管道和無名管道,有名管道類似於建立乙個檔案使得任意兩程序之間可以進行通訊。而無名管道的生存依賴與程序的生命週期,無名管道的適用面小於有名管道,只適用與有親緣關係的程序,比如通過fork()函式產生的程序,父程序子程序等等
通過有名管道兩個程序之間相互通訊
讀取管道中資訊的程序:
int main()
; while(1)
printf("%s", buf);
memset(buf, 0, 128);
} return 0;
}
為管道傳送資訊的程序:
int main()
; while(1)
memset(buf,0,128);
} return 0;
}
在linux下,建立管道的命令:mkfifo 管道名,還有建立管道的函式mkfifo可提供程式建立管道
無名管道用於程序間的通訊:
int main()
; read(fd[0], buff, 127);
printf("the child is %s\n", buff);
close(fd[0]);
} else//父程序從其中寫資料
; fgets(buff, 127, stdin);
write(fd[1], buff, strlen(buff));
close(fd[1]);
} exit(0);
}
程序間通訊 之 管道
一 無名管道 特點 具有親緣關係的程序間通訊,但不僅僅指父子程序之間哦。1 無名管道的建立 int pipe int pipefd 引數 pipefd 陣列的首位址 返回值 成功返回0,失敗返回 1 注意 無名管道存在核心空間,建立成功會給使用者空間兩個檔案描述符,fd 0 讀管道 fd 1 寫管道...
程序間通訊之管道
我們將乙個程序到另乙個程序的資料流稱為管道,它是程序間通訊最古老的方式。管道分為兩種 匿名管道與命名管道。匿名管道 顧名思義,所謂的匿名管道自然就是沒有名字的管道,這種管道通常用於有親緣關係的程序間的通訊。匿名管道通常由pipe函式來建立,當乙個程序建立了乙個匿名管道後,它們的模型就是這樣的 可以看...
程序間通訊之管道
既然要介紹程序間通訊,首先來看看什麼是程序間通訊 2.程序間通訊的目的 1 資料傳輸 乙個程序需要將它的資料傳送給另乙個人程序 2 資源共享 多個程序共享同樣的資源 3 通知事件 乙個程序需要向另乙個或一組程序傳送訊息,通知它 它們 發生了某種事件 4 程序控制 有些程序希望完全控制某些程序的執行,...