2021.3.31学习笔记

进程间的通信方式

(一)管道

同一tab里的互相通信

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>

#define FIFO "./test.txt"

int main()
{
    int fd;
    int i = 0;
    int status;
    pid_t pid;
    int info = mkfifo(FIFO, 0666);

    if (info < 0)
    {
	perror ("mkfifo error!");
	exit(1);
    }

    pid = fork();
    if(-1 == pid)
    {
	perror("fork error");
	exit(1);
    }

    if (0 == pid)
    {
	while(1)
	{
	fd = open(FIFO, O_WRONLY);
	char buf[21] = {0};
	printf("please input1:\n");
	scanf("%s",buf);
	write(fd,buf,strlen(buf));
	memset(buf, 0 , sizeof(buf));
	sleep(1);

	fd = open(FIFO, O_RDONLY);
	read(fd,buf,20);
	printf("zhangsan dui lisi:%s\n",buf);
        memset(buf,0,sizeof(buf));
	}
   	exit(0);
    }

    else
    {
	while(1)
	{
		fd = open(FIFO,O_RDONLY);
        	char buffer[1024] = {0};
        	read(fd,buffer,12);
        	printf("lisi dui zhangsan:%s\n",buffer);
		memset(buffer, 0 , sizeof(buffer));
	
		fd = open(FIFO, O_WRONLY);
		printf("please input2:\n");
		scanf("%s",buffer);
		write(fd,buffer,strlen(buffer));
		memset(buffer,0 ,sizeof(buffer));
		sleep(1);
	}
     }
	

    return 0;
}

运行结果在这里插入图片描述

不同tab里的互相通信

read.c
在这里插入图片描述
write.c
在这里插入图片描述
运行结果:
在这里插入图片描述
在这里插入图片描述

(二) 消息队列

(三)信号量

信号:软中断(程序间信息传递的媒介
1、ctrl+z:暂停信息
2、ctrl+c:停止信号
3、int kill(pid_t pid,int sig)
信号处理
1、sighandler_t signal(int signum,signhandler_t handler);
信号的编号:signum
信号的处理机制:sighandler
忽略信号:SIG_IGN
信号的直接处理:SIG_DFL

(四)共享内存

(五)套接字

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值