一.无名管道pipe

#include <unistd.h>
int pipe(int fd [2])

二.fifo

#include <sys/stat.h>
int mkfifo(const char *path, mode_t mode);

三.信号

#include <signal.h>
void (*signal(int sig, void (*func)(int)))(int);
#include <signal.h>
int sigaction(int sig, const struct sigaction *restrict act,struct sigaction *restrict oact);
#include <signal.h>
int kill(pid_t pid, int sig);
#include <signal.h>
int raise(int sig); 
#include <signal.h>
int sigqueue(pid_t pid, int signo, const union sigval value);
#include <unistd.h>
unsigned alarm(unsigned seconds);
#include <stdlib.h>
void abort(void);

四.消息队列

#include <sys/msg.h>
int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);
#include <sys/msg.h>
ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp,int msgflg);
#include <sys/msg.h>
int msgget(key_t key, int msgflg);
#include <sys/msg.h>
int msgctl(int msqid, int cmd, struct msqid_ds *buf);

五.信号量

#include <sys/ipc.h>
key_t ftok(const char *path, int id);
#include <sys/sem.h>
int semget(key_t key, int nsems, int semflg);
#include <sys/sem.h>
int semop(int semid, struct sembuf *sops, size_t nsops);
#include <sys/sem.h>
int semctl(int semid, int semnum, int cmd, ...);

六.共享内存

#include <sys/shm.h>
int shmget(key_t key, size_t size, int shmflg);
#include <sys/shm.h>
void *shmat(int shmid, const void *shmaddr, int shmflg);
#include <sys/shm.h>
int shmdt(const void *shmaddr);
#include <sys/shm.h>
int shmctl(int shmid, int cmd, struct shmid_ds *buf);

七.socket

#include <sys/socket.h>
int socket(int domain, int type, int protocol);
#include <sys/socket.h>
int bind(int socket, const struct sockaddr *address,socklen_t address_len);
#include <sys/socket.h>
int connect(int socket, const struct sockaddr *address,socklen_t address_len);
#include <sys/socket.h>
int accept(int socket, struct sockaddr *restrict address,socklen_t *restrict address_len);
#include <sys/socket.h>
ssize_t recv(int socket, void *buffer, size_t length, int flags);
#include <sys/socket.h>
ssize_t recvfrom(int socket, void *restrict buffer, size_t length,int flags,
struct sockaddr *restrict address,socklen_t *restrict address_len);
#include <sys/socket.h>
ssize_t recvmsg(int socket, struct msghdr *message, int flags);
#include <sys/socket.h>
ssize_t send(int socket, const void *buffer, size_t length, int flags);
#include <sys/socket.h>
ssize_t sendto(int socket, const void *message, size_t length,int flags,
const struct sockaddr *dest_addr,socklen_t dest_len);
#include <sys/socket.h>
ssize_t sendmsg(int socket, const struct msghdr *message, int flags);

UNIX环境高级编程——进程间通讯方法整理的更多相关文章

  1. UNIX环境高级编程——进程管理和通信(总结)

    进程管理与通信 进程的管理 进程和程序的区别: 进程: 程序的一次执行过程   动态过程,进程的状态属性会发生变化 程序:存放在磁盘上的指令.数据的有序集合  是个文件,可直观看到 程序program ...

  2. UNIX环境高级编程——进程基本概述

    一.什么是进程 从用户的角度来看进程是程序的一次执行过程.从操作系统的核心来看,进程是操作系统分配的内存.CPU时间片等资源的基本单位.进程是资源分配的最小单位.每一个进程都有自己独立的地址空间与执行 ...

  3. UNIX环境高级编程——进程控制

    一.进程标识符 ID为0的进程是调度进程,常常被称为交换进程.该进程是内核的一部分,它并不执行任何磁盘上的程序,因此也被称为系统进程.进程ID 1通常是init进程,在自举过程结束时由内核调用.ini ...

  4. Unix环境高级编程—进程关系

    终端登录 网络登录 进程组 getpgrp(void) setpgid(pid_t pid, pid_) 会话: 是一个或多个进程组的集合,通常由shell的管道将几个进程编成一组. setsid(v ...

  5. Unix环境高级编程—进程控制(二)

    一.函数wait和waitpid 今天我们继续通过昨天那个死爹死儿子的故事来讲(便于记忆),现在看看wait和waitpid函数. #include<sys/wait.h> pid_t w ...

  6. UNIX环境高级编程——进程关系

    一.终端的概念 在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端(Controlling Terminal),控制终端是保存在PCB中的信息,而我们 ...

  7. UNIX环境高级编程——进程环境

    一.main函数 C程序总是从main函数开始.当内核执行C程序时,在调用main前先调用一个特殊的启动例程.可执行程序文件将此启动例程指定为程序的起始地址--这是由连接编译器设置的,而连接编译器则由 ...

  8. unix环境高级编程----进程控制wait()

    一.wait()函数 当一个进程中调用wait()函数的时候 (1)假设其全部的子程序都还在执行,则堵塞 (2)假设一个子进程已终止.则等待父进程获取其终止状态. (3)假设没有子进程,则返回错误. ...

  9. Unix环境高级编程—进程控制(三)

    一.解释器文件 解释器文件属于文本文件,起始行形式为: #! pathname[optional-argument] 我们创建一个只有一行的文件如下: #!/home/webber/test/echo ...

随机推荐

  1. CSS :focus 选择器

    :focus 选择器用于选取获得焦点的元素. <!DOCTYPE html> <html> <head> <style> input:focus { b ...

  2. App上架应用市场,如何攻破安全过检难题

    App的安全过检与众所熟知的安全检测是两个完全不同的概念.首先App行业本身对App安全过检有一定的要求与规范,其次2017年6月1日正式实施的<中国网络安全法>中就曾要求App在渠道上线 ...

  3. Missing URI template variable 'XXXX' for method parameter of type String

    原因:就是spring的controller上的@RequestMapping的实参和方法里面的形参名字不一致 方法:改成一样就可. ps.还能用绑定的方法,不建议,因为太麻烦了 @RequestMa ...

  4. java海量大文件数据处理方式

    1. 给定a.b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a.b文件共同的url? 方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4 ...

  5. Python学习---字符串处理

    This world is but a canvas to our imagination. 世界只是我们的想象的画布. ----Apri 22 ''' 题目内容: "Pig Latin&q ...

  6. Microsoft Visual Studio 2017 编译最新版 libuv 1.x

    步骤很简单 1 下载最新版的 libuv(地址:https://github.com/libuv 2 安装Git,Python 2.7 ,cmake(这里使用的是 3.11.0-win64-x64 版 ...

  7. Node.js 字符串解码器

    稳定性: 3 - 稳定 通过 require('string_decoder') ,可以使用这个模块.字符串解码器(StringDecoder)将缓存(buffer)解码为字符串.这是 buffer. ...

  8. Python 元组内置函数

    Python元组包含了以下内置函数 序号 方法及描述 1 cmp(tuple1, tuple2)比较两个元组元素. 2 len(tuple)计算元组元素个数. 3 max(tuple)返回元组中元素最 ...

  9. C++编译连接过程中关于符号表的报错分析

    是这样的,在学习郑莉老师的多文件结构和编译预处理命令章节时候,看到书里有这么一张图描述如下:#include指令作用是将指定的文件嵌入到当前源文件中#include指令所在的位置. 然后我就想5_10 ...

  10. cassandra 概述

    摘要 本篇文章主要是介绍cassandra与其他NoSQL的区别以及自身的特点与应用场景.在关系数据库我们没必要选择数据库,通常需要适配oracle/mysql/sql server/db2 等多种数 ...