精华内容
下载资源
问答
  • Linux进程间的通信

    2015-02-06 10:50:28
    自己总结了一些关于进程间通信的方式,内容不全或者有什么不足的请大家谅解。...Linux进程间的通信主要有: 1.管道通信 a.无名管道 b.有名管道 2.信号 3.消息队列 4.共享内存 5.信号量 6.套接字 一.管道 1.无名管道

    自己总结了一些关于进程间通信的方式,内容不全或者有什么不足的请大家谅解。方便的话可以指点小弟一下,感激不尽。


    Linux进程间的通信主要有:

    一.管道通信

    二.信号

    三.共享内存

    四.信号量

    五.消息队列

    六.套接字


    一.管道

    1.无名管道

    特点:a.两个进程之间必须具有情缘关系;

    b.这种方式的通信是单工的,具有固定的读写端。fd【0】和fd【1】分别是读写端;

    使用函数:int pipe(int fd[【】);

    2.有名管道

    与无名管道不同的是两个进程间不需要情缘关系,可以是任意进程。管道的通信方式是通过类似于文件的读写,使用open()、read()、write()函数。

    使用函数:int mkfifo(const char *filename, mode_t mode);

    filename: 要创建的管道名

    mode: 管道的访问权限


    二.信号

    信号是在软件层次上对中断机制的模拟。信号是异步的:一个进程不必通过任何操作来等待一个信号的到达。信号是进程间通信机制中唯一的异步通信机制。

    进程可以通过3种方式来响应一个信号:

    1.忽略信号

    2.捕捉信号

    3.执行默认信号

    下面是常见的信号:

    SIGHUP  

    SIGINT

    SIGQOUIT

    SIGILL

    SIGFPE

    SIGKILL

    SIGKILL

    SIGALARM

    SIGSTOP

    SIGTSTP

    SIGCHLD

    发送信号的函数:信号的发送int kill(pid_t pid, int sig)、信号的捕捉int rase(int sig);

    设置信号函数:sighandler_t signal(int signum, sighandler_t hander)、sigaction();

    其他函数:alarm()、puase();




    三.共享内存

    共享内存是一种最为高效的进程间通信,进程可以直接读写内存,而不需要进行任何数据的拷贝。

    共享内存的使用步骤:

    1.创建/打开共享内存

    2.映射共享内存

    3.撤销映射

    3.删除共享内存

    使用的函数:

    创建共享内存:

    int shmget(key_t key, int size, int shmflg); 

    key:共享内存的键值,进程可以通过键值来访问对应的共享内存;

    size:设置共享内存的大小;

    shmflg:设置共享内存的访问权限;

    共享内存的映射:

    char *shmat(int shmid, const void *shmaddr, int shmflg);

    shmid:要映射到共享内存的标示符;

    shmaddr:将共享内存映射到指定的地址;

    shmflg:设置权限;

    解除映射:

    int shmdt(const void *shmaddr);

    删除共享内存:

    int shmctl(int shmid,int cmd, struct shmid_ds *buf);





    四.信号量

    同步和异步

    同步:

    使用函数:

    初始化int sem_init(set_t *sem, int pshared, unsigned int value);

    p操作:int sem_wait(sem_t  *sem); 

    v操作:int sem_post(sem_t *sem);

    互斥:主要用来保护临界资源

    使用函数:

    初始化锁:int pthread_mutex_init(pthread_mutex *mutex, pthread_mutexattr_t *attr);

    申请互斥锁:int pthread_mutex_lock(pthread_mutex *mutex);

    释放互斥锁:int pthread_mutex_unlock(pthread_mutex *mutex);


    五消息队列

    六.套接字

    常见的socket分为以下三种

    1.流式套接字SOCKET_STREAM:提供可靠的、面向连接的通信流。TCP就是采用流式套接字。

    2.数据报套接字SOCKET_DGRAM:是一种不可靠、无连接的服务。UDP就是采用数据报套接字。

    3.原始套接字:允许对底层协议直接访问,如IP或ICMP。主要用于协议的开发。















    展开全文
  • linux进程间的通信

    2017-05-12 16:58:46
    进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问介质呢?进程用户空间是互相独立,一般而言是不能互相访问,唯一例外是共享内存区。另外,系统空间是“公共场所...
    1. 什么是进程间通信?
      进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。另外,系统空间是“公共场所”,各进程均可以访问,所以内核也可以提供这样的条件。此外,还有双方都可以访问的外设。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过“注册表”或其它数据库中的某些表项和记录交换信息。广义上这也是进程间通信的手段,但是一般都不把这算作“进程间通信”。(来自百度百科)

    注:因此在用户空间实现进程通信是不可能的,通过Linux内核通信
    2. 有哪几种通信方式?
    管道通信:无名管道、有名管道(文件系统中有名)
    信号通信:信号(通知)通信包括:信号的发送、信号的接收和信号的处理。
    IPC(Inter-Process Communication)通信:共享内存、消息队列和信号灯。
    以上是单机模式下的进程通信(只有一个Linux内核)
    Socket通信:存在于一个网络中两个进程之间的通信(两个Linux内核)。
    3. 学习思路
    进程通信的学习思路:每一种通信方式都是基于文件IO的思想。
    open:功能:创建或打开进程通信对象。函数形式不一样,有的是有多个函数完成。
    write: 功能:向进程通信对象中写入内容。函数形式不一样。
    read: 功能:从进程通信对象中读取内容。函数形式不一样。
    close: 功能:关闭或删除进程通信对象。形式不一样。

    这里写图片描述

    上面图片是文件I/O读写函数和IPC(Inter-Process Communication)通信:共享内存、消息队列和信号灯相关函数的对比。具体可使用linux下man命令查看具体形式比如(man read,man shmget)。如下图:
    这里写图片描述

    这里写图片描述

    通过man命令查看这些函数的具体形式和参数,即可了解并使用。

    展开全文
  • 文章目录Linux进程间的通信方式 Linux进程间的通信方式 1、什么叫进程间通信(IPC,Interprocess communication):是指两人个或多个进程之间交换数据的过程叫进程间通信。 2、进程之间为什么需要通信?当需要多个...

    Linux进程间的通信方式

    1、什么叫进程间通信(IPC,Interprocess communication):是指两人个或多个进程之间交换数据的过程叫进程间通信。
    2、进程之间为什么需要通信?当需要多个进程协同工作高效率完成任务时,因为每个进程都个独立的个体(资源单位),进程之间就需要进行通信。
    3、进程间通信方式:
    	1、简单进程间通信:命令行参数,环境变量表、信号、文件
    	2、传统进程间通信:管道
    	3、XSI进程间通信:共享内存、消息队列、信号量
    	4、网络进程间通信:socket
    
    展开全文
  • linux进程间的通信 进程间的通信就是不同的进程之间传播或交换信息,进程的用户空间是互相独立,进程之间可以利用系统空间交换信息。 管道 允许将一个进程的标准输出和另一个进程的标准输入连接在一起,主要用于不同...

    linux进程间的通信

    进程间的通信就是不同的进程之间传播或交换信息,进程的用户空间是互相独立,进程之间可以利用系统空间交换信息。

    管道

    允许将一个进程的标准输出和另一个进程的标准输入连接在一起,主要用于不同进程之间的通信,linux shell允许重定向,而重定向使用的就是管道。

    信号量

    信号量是一种技术器,可以控制进程间多个线程或者多个进程对资源的同步访问,它常实现为一种锁机制。

    信号

    用在一个或者多个进程之间传递异步信号。操作系统通过信号来通知某一进程发生了某一种预定好的事件

    共享内存

    共享内存映射为一段可以被其他进程访问的内存,该共享内存由一个进程所创建,然后其他进程可以挂载到该共享内存中。

    套接字

    socket也是一种进程间的通信机制,不过它与其他通信方式的主要区别在于:它可以实现不同主机的进程通信

    几种方式的优缺点
    管道:速度慢,容量有限,只能用于亲缘关系进程间的通信;

    信号量:主要用于同步,无法传递复杂的数据

    转载于:https://www.cnblogs.com/hanfei-1005/p/5678516.html

    展开全文
  • Linux进程间的通信——有名管道fifo与守护进程deamon
  • linux进程通信 socket编程
  • linux进程间的通信(C): 匿名管道

    千次阅读 2013-02-25 06:13:49
    1. Linux进程间的通信简介 Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。 AT&T的贝尔实验室和BSD(加州大学伯克利分校的伯克利软件发布中心) 对Unix发展做出重大贡献, 但是他们在进程...
  • 进程间的通信通过与内核及其他线程间的互相通信来协调。 进程通信的应用场景 1.数据传输 一个进程需要将他的数据发送给另一个进程,发送的数据在一个字节到几兆字节之间 2.共享数据 多个进程想要操作共享数据,...
  • 注意:学习进程间的通信重点在每种通讯方式所适用的场景和其使用方法。2.管道通信一个进程在管道的尾部写入数据,另一个进程从管道的头部读出数据。管道包括无名管道和有名管道两种,前者只能用于父进程和子进程间的...
  • 进程概念进程是操作系统...但很多情况下进程间需要互相通信,来完成系统某项功能。进程通过与内核及其它进程之间互相通信来协调它们行为。进程通信的应用场景数据传输:一个进程需要将它数据发送给另...
  • Linux进程间的通信方式和原理

    万次阅读 2016-10-30 17:05:43
    进程概念 进程是操作系统概念,每当...但很多情况下进程间需要互相通信,来完成系统某项功能。进程通过与内核及其它进程之间互相通信来协调它们行为。 进程通信的应用场景 数据传输:一个进程需要将它数据
  • linux进程间通信方式是学习linux编程重点,这里转载一篇好博文,作为第一篇博客;主要介绍了IPC技术和通信方式和特点。 http://blog.csdn.net/love_gaohz/article/details/6636661
  • 简介管道是进程间通信(IPC)一种重要方式,在 Linux 中,管道实现并没有使用专门数据结构,而是借助了文件系统file结构和VFS索引节点inode。通过将两个 file 结构指向同一个临时 VFS 索引节点,而这个 ...
  • 简介: 一个大型应用系统,往往需要众多进程协作,进程(Linux进程概念见附1)间通信的重要性显而易见。本系列文章阐述了Linux环境下几种主要进程间通信手段,并针对每个通信手段关键技术环节给出详细实例。为...
  • PHP与Linux进程间的通信

    千次阅读 2015-08-21 23:29:51
    进程间通信估计是公司考察应届毕业生必考点(嵌入式行业),当然很多公司考是算法。不查阅资料,我脑子里能想到 [1] 管道, (有名,无名) [2] 父子进程 [3] System V (消息队列, 共享内存,信号量) ...
  • 守护进程是一种很有用的进程.Linux的大多数服务器就是用守护进程实现.比如,Internet服务器inetd,Web服务器httpd等.同时,守护进程完成许多系统任务.比如,作业规划进程crond,打印进程lpd等. 创建守护进程步骤总结1、...
  • 信号:在linux中信号是一个古老的进程间的通讯机制,就像古代烽火台所起到的传递信号的作用一样。 信号处理流程 信号通讯机制就分为三步:选择信号→发送信号→处理信号 信号类型 linux系统支持的所有信号均定义在...
  • 与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制,主要用途是保护临界资源,相当于内存中标志,进程可以根据它判断是否能够访问某些共享资源,同时,进程也可以修改标志,除了用于访问控制...
  • IPC的技术提出的应用背景. 进程之间需要同步处理: 同步需要通信. 普通文件就是最基本的通信手段. 普通文件IPC技术的问题: 一个进程改变文件,另外一个进程无法感知
  • Linux进程间的通信方式和原理【转】

    千次阅读 2018-04-21 00:29:26
    进程概念 进程是操作系统概念,每当我们执行一个程序时,对于操作系统来讲就创建了一个进程,在这个过程中,伴随着资源分配和释放。可以认为进程是一个程序一次执行过程。...但很多情况下进程间...
  • 信号量 .什么是信号量? 信号量是一种特殊变量,访问具有原子性 只允许对它进行两个操作: ...共享内存是进程间通信中最简单方式之一,共享内存允许两个或更多进程访问同一块内存 就如同 malloc() 函数向不...
  • 一、顺序程序与并发程序特征 ...1、由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程这种关系为进程互斥 2、系统中某些资源一次只允许一个进程使用,称这样资源

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,979
精华内容 5,191
关键字:

linux进程间的通信

linux 订阅