进程间通信
进程间通信方式 普通文件 管道(pipe) 信号(signal) 共享内存(shared memory) socketpair socket 普通文件 普通文件可能是我们接触的最早的进程间通信的方式了,只是在刚接触时,并不知道或了解进程是什么。多个进程可以通过读写同一个文件达到通信的目的。 管道 管道是以半双工(数据可以在一个信号载体的两个方向上传输,但是不能同时传输)机制来通信的,分为匿名管道可有名管道;匿名管道只能用于有亲缘关系的进程,有名管道能用于有亲缘关系和无亲缘关系的进程。 // 匿名管道,模拟全双工 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> int main(argc, char* argv[]) { int fd_first[2], fd_second[2]; if( !(!pipe(fd_first) && pipe(fd_second)) ){ perror("pipe"); return -1; } pid_t pid = fork(); if(pit == 0){ // Child process close(fd_first[0]); close(fd_second[1]); char msg[128] = "Hi, Parant process ..."; write(fd_first[1], msg, strlen(msg) + 1); memset(msg, 0, sizeof(msg)); read(fd_second[0], msg, sizeof(msg)); printf("Message from Parent: %s\n", msg); }else{ close(fd_first[1]); close(fd_second[0]); char msg[128] = {0}; read(fd_first[0], msg, sizeof(msg)); printf("Message from Child: %s\n", msg); memset(msg, 0, sizeof(msg)); strcpy(msg, "Hi, Child ..."); write(fd_second[1], msg, strlen(msg) +...
面朝大海,春暖花开
从明天起,做一个幸福的人 喂马、劈柴,周游世界 从明天起,关心粮食和蔬菜 我有一所房子,面朝大海,春暖花开 从明天起,和每一个亲人通信 告诉他们我的幸福 那幸福的闪电告诉我的 我将告诉每一个人 给每一条河每一座山取一个温暖的名字 陌生人,我也为你祝福 愿你有一个灿烂的前程 愿你有情人终成眷属 愿你在尘世获得幸福 我只愿面朝大海,出暖花开