首页 > 系统相关 >linux 6day

linux 6day

时间:2023-07-03 23:22:39浏览次数:42  
标签:6day int fds 管道 fd str linux flags

Linux 6day

1.进程间通信

进程间通信 进程是孤立的故此需要去访问其他进程 IPC 进程间通讯

进程通信一般用于 数据传输 通知数据 资源共享 进程控制

进程通信的方法

zc

2.无名管道

1.特点

管道特点

管道抽象图

2.管道创建 pipe函数
 #include <unistd.h>
 int pipe(int pipefd[2]);
 功能:创建无名管道。
 参数:
     pipefd : 为 int 型数组的首地址,其存放了管道的文件描述符 pipefd[0]、pipefd[1]。
     当一个管道建立时,它会创建两个文件描述符 fd[0] 和 fd[1]。其中 fd[0] 固定用于读管道,而 fd[1] 固定用于写管道。一般文件 I/O的函数都可以用来操作管道(lseek() 除外)。
 返回值:
     成功:0
     失败:-1
 int fds[2];
 int ret=-1;
 ret=pipe(fds);
3.利用无名管道进行父子间通信

父子进程管道通信

 int main()
 {
 int fds[2];
 int ret=-1;
 pid_t pid;
 ret=pipe(fds);
 pid=fork();
 if(pid==0)
 {
 char buf[]=" i am cxy";
 write(fds[1],buf,strlen(buf));///管道写
 _exit(0);
 }
 else if(pid>0)
 {
 wait(NULL);
 char str[80]={0};
 read(fds[0],str,sizeof(str));//管道读
 ​
 printf("str=[%s]\n", str);
 }

管道阻塞属性 当父进程读管道内无数据就会阻塞 只有写了才会有数据

4.管道读写特点

管道读写特点

读写特点

5.查看缓冲区大小

命令查看缓冲区大小

     #include <unistd.h>
 long fpathconf(int fd, int name);
 功能:该函数可以通过name参数查看不同的属性值
 参数:
     fd:文件描述符
     name:
         _PC_PIPE_BUF,查看管道缓冲区大小
         _PC_NAME_MAX,文件名字字节数的上限
 返回值:
     成功:根据name返回的值的意义也不同。
     失败: -1
     long num = fpathconf(fd[0], _PC_PIPE_BUF);
 ​
     printf("num = %ld\n", num);
6.设置非阻塞
 设置方法:
 //获取原来的flags
 int flags = fcntl(fd[0], F_GETFL);
 // 设置新的flags
 flag |= O_NONBLOCK;
 // flags = flags | O_NONBLOCK;
 fcntl(fd[0], F_SETFL, flags);


标签:6day,int,fds,管道,fd,str,linux,flags
From: https://www.cnblogs.com/lzfyz/p/17524433.html

相关文章

  • bpftune oracle linux 试用体验
    今天有测试bpftune与Rockylinux的集成,发现构建是可以成功的,但是运行会有问题(提示不支持,应该用过修改可以解决),为了更好的测试,自己跑了一个oraclelinux虚拟机跑下环境搭建通过utm+oraclelinux8.8,还是比较简单的ios下载地址:链接:https://pan.baidu.com/s/1L6ZB-2_......
  • linux系统中彻底删除MySql
    一、使用以下命令查看当前安装mysql情况,查找以前是否装有mysql1rpm-qa|grep-imysql可以看到如下图的所示:   显示之前安装了:MySQL-client-5.5.25a-1.rhel5MySQL-server-5.5.25a-1.rhel5二、停止mysql服务、删除之前安装的mysql......
  • W04-LINUX防火墙
    NAT实现:1,SNAT:SourceNAT本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装,请求报文:修改源IP;#iptables-tnat-APOSTROUTING-s10.0.0.0/24!-d10.0.0.0/24-jSNAT---to-source192.168.10.200(固定公网IP)#iptables-tnat-APOSTROUTING-s10.0.0.0/24!-d......
  • Linux系统
    Linux系统Linux系统结构(静态角度)UNIX系统由内核、shell、文件系统(系统调用和共用函数库)和应用程序等4部分组成启动顺序:bootloader->linuxkernel->rootfileBootLoader引导程序:用于引导系统,初始化硬件设备、建立内存空间的映射。开发版用ubootLinux系统用imagekernel(li......
  • Cisco AnyConnect Secure Mobility Client 4.10.07062 (macOS, Linux, Windows)
    CiscoAnyConnectSecureMobilityClient4.10.07062(macOS,Linux,Windows)CiscoSecureClient(包括AnyConnect)请访问原文链接:https://sysin.org/blog/cisco-anyconnect-4/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org新版已发布:CiscoSecureClient5.0.030......
  • Linux下PAM认证详解(以centos7为例)
    Linux下PAM认证详解(以centos7为例)PAM简介(PluggableAuthenticationModules,可插拔认证模块) Sun公司于1995年开发的一种与认证相关的通用框架机制:PAM(可插拔认证模块)是实现认证工作的一个模块。     因为每个服务都用到不同的认证方式,所以就需要不同的认证库。  认......
  • Linux设置字符编码
    一、Linux设置字符编码1、什么是字符编码字符编码可以实现对非英文字符的支持,防止非英文字符的乱码。2、国内常用的字符编码UTF-8 GBK3、设置字符编码我们可以对Linux系统的字符编码进行查看,临时修改,永欠修改。3.1、临时修改#查看当前使用字符编码,一般默认都为en_US.UTF......
  • yum是什么?(linux命令) .
    一.yum是什么yum=YellowdogUpdater,Modified主要功能是更方便的添加/删除/更新RPM包.它能自动解决包的倚赖性问题.它能便于管理大量系统的更新问题注:为什么要使用yum而不用apt,最简单的原因,Fedora自带二.yum特点*可以同时配置多个资源库(Repository)*简洁的配置文......
  • Apisix-linux下的内网安装
    1.背景一般测试环境都是没有外网的,apisix官网写了安装方式,但是感觉描述的并不好,结合自己的实际体验整理了下。APISIX-官网APISIX-GitHub2.离线安装假设现在有两台相同的机器我刚开始没注意到这个问题,A机是centos8,B机是centos7,下载后的rpm文件在B机上就用不了了。A机:拥有......
  • linux源码解读(三):文件系统——inode【转】
    转自:https://www.cnblogs.com/theseventhson/p/15622853.html众所周知,计算机系统在掉电后也能存储数据的就是磁盘了,所以大量数据大部分时间是存放在磁盘的;现在新买的PC,磁盘从数百G到1TB不等;服务器的磁盘从数十TB到上百TB,这么大的存储空间,该怎么高效地管理和使用了?站在硬件角度,cpu......