一.无名管道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. jdk1.7和jdk1.8区别

    转自:http://www.2cto.com/kf/201307/225968.html 本文是我学习了解了jdk7和jdk8的一些新特性的一些资料,有兴趣的大家可以浏览下下面的内容. 官方文档:ht ...

  2. 利用create-react-app结合react-redux、react-router4构建单页应用

    1.创建项目: a.全局安装create-react-app: npm  install  create-react-app  -g b.执行create-react-app  my-projectN ...

  3. Jupyter Notebook 快速入门

    Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言.在本文中,我们将介绍 Jupyter notebook 的主要特性,以 ...

  4. python学习之路前端-jQuery

    jQuery简介      JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF1.5+, Safa ...

  5. 转:Xming + PuTTY 在Windows下远程Linux主机使用图形界面的程序

    一.原理Linux/Unix的X Window具有网络透明性.X Window系统里有一个统一的Server来负责各个程序与显示器.键盘和鼠标等输入输出设备的交互,每个有GUI的应用程序都通过网络协议 ...

  6. Linux常见目录及命令介绍

    一.Linux中常用的目录介绍:     /        -根目录     /bin    -命令保存目录(普通用户亦可读取的命令)     /boot    -启动目录,启动相关文件     /d ...

  7. Rails做rspec测试时出现bcrypt错误的解决

    在用rspec做测试的时候,出现了如下一句错误: You don't have bcrypt-ruby installed in your application. Please add it to ...

  8. 关于bitmap你不知道的一些事

    1.计算机表示图形的几种方式 1)BMP :几乎不进行压缩 占用空间比较大 2)JPG : 在BMP的基础上对相邻的像素进行压缩,占用空间比BMP小 3) PNG : 在JPG的基础上进一步压缩 占用 ...

  9. 使用Intent传递对象

    Intent 的用法相信你已经比较熟悉了,我们可以借助它来启动活动.发送广播.启动服务等.在进行上述操作的时候,我们还可以在Intent 中添加一些附加数据,以达到传值的效果,比如在FirstActi ...

  10. 详解EBS接口开发之应收款处理

    参考实例参考:杜春阳 R12应收模块收款API研究 (一)应收款常用标准表简介 1.1   常用标准表 如下表中列出了与应收款处理相关的表和说明: 表名 说明 其他信息 AR_BATCHES_ALL ...