`
deepfuture
  • 浏览: 4412266 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80130
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:70350
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103590
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:286569
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15054
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67786
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32292
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:46075
社区版块
存档分类
最新评论

linux-C管道

阅读更多
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

void read_data(int pipes[]){//从管道读数据
  char c;
  int rc;
  close(pipes[1]);//读进程不用写管道pipes[1]为写管道
  while ((rc=read(pipes[0],&c,1))>0){
     printf("%c",c);
  }
  close(pipes[0]);
  exit(0);
}

void write_data(int pipes[]){//写管道数据
  char c;
  int rc;
  close(pipes[0]);//写进程不用读管道pipes[0]为读管道
  scanf("%c",&c);
  while (c!='x'){//读到x后退出
     rc=write(pipes[1],&c,1);
     scanf("%c",&c);
     if (rc==-1){  //错误
        perror("parent write error");
        close(pipes[1]);
        exit(1);
     }
  }
  close(pipes[1]);
  exit(0);
}

int main(int argc,char *argv[]){
  int pipes[2];
  pid_t pid;
  int rc;

  rc=pipe(pipes);
  if (rc==-1){  
     perror("pipe error");
     exit(1);
  }
  pid=fork();
  if (pid==0) read_data(pipes);
  else write_data(pipes);
  return 0;
}

 knoppix@Microknoppix:/mnt-system/deepfuture$ gcc -o test11 test11.c
test11.c: In function 'read_data':
test11.c:13: warning: incompatible implicit declaration of built-in function 'exit'
test11.c: In function 'write_data':
test11.c:27: warning: incompatible implicit declaration of built-in function 'exit'
test11.c:31: warning: incompatible implicit declaration of built-in function 'exit'
test11.c: In function 'main':
test11.c:42: warning: incompatible implicit declaration of built-in function 'exit'
knoppix@Microknoppix:/mnt-system/deepfuture$ ./test11
q
q
r
r
u
u
k
k
x

0
0
分享到:
评论

相关推荐

    linux-c语言编程.pdf

    - 掌握进程的概念,包括进程的创建、调度、通信机制(如管道、信号量、共享内存)以及进程间的同步与互斥问题,是深入Linux编程的关键。 2. **文件操作**: - 文件操作是任何编程语言中不可或缺的一部分。在Linux...

    linux-c-api-ref.zip_linux api_linux-c-api-ref

    以上只是Linux C API中的一部分核心知识点,实际的API包含更多内容,如进程间通信(IPC)、定时器、共享内存、管道等。深入理解和熟练使用这些API是开发高效、可靠的Linux应用程序的关键。通过阅读“linux-c-api-ref...

    mongodb-linux-x86_64-rhel70-4.2.14.tgz

    tar -zxvf mongodb-linux-x86_64-rhel70-4.2.14.tgz -C /opt ``` 接下来,创建一个MongoDB的数据存储目录,例如 `/data/db`,并确保其具有合适的权限: ```bash mkdir -p /data/db chown -R mongod:mongod /data/...

    linux-sys.zh 邢文鹏课件

    2. C标准库与系统函数:在学习Linux系统编程时,并不需要了解所有的C标准库函数和系统函数。通过学习一部分常用函数,可以掌握库函数的基本用法。了解这些后,读者应该学会通过查阅系统手册(ManPage)来学习未覆盖...

    powershell-6.1.0-linux-x64.tar.gz

    在Windows系统中,PowerShell是默认的管理工具,而在Linux上,它是跨平台的,允许Linux和macOS用户使用PowerShell的强大功能,如对象化输出、管道和模块化脚本编写。 标签中提到了"shell",指的是命令行解释器,也...

    Linux实验八:LinuxC-编程-IO-重定向和管道.doc

    通过这些实验,你可以深入理解Linux系统中I/O重定向和管道的工作原理,以及如何在C程序中实现它们。这些基础知识对于系统级编程和shell脚本编写非常重要,因为它们允许我们灵活地控制程序的输入输出,以及在不同进程...

    linux-c编程linux-c编程

    ### Linux-C编程重要知识点概述 #### 一、基础知识 ##### 源程序编译 - **GCC编译器**: 在Linux环境下,最常用的C语言编译器是GNU Compiler Collection (GCC)。它不仅支持C语言,还支持C++、Objective-C、Fortran...

    Linux-C-function-user.rar_linux user

    这份名为"Linux-C-function-user.rar_linux user"的压缩包提供了一个关于Linux环境下C语言函数使用的详细手册,特别适合C和C++开发者参考。其中包含的"Linux-C-function-user.chm"文件是一个CHM(Compiled HTML Help...

    Linux环境C语言调用Mplayer实现音乐播放器(其中缺少了一个FIFO管道文件)

    在Linux环境中,使用C语言开发一个音乐播放器可以是一个相当有挑战性的项目,因为它涉及到多个核心的编程概念和技术。这个项目特别提到了调用Mplayer作为后端播放引擎,Mplayer是一个强大的命令行媒体播放器,支持...

    Linux-C.rar_linux txt

    本文将深入探讨"Linux C编程开发"的相关知识点,包括Linux环境、C语言基础、编译与调试、文件操作、进程管理、网络编程以及Linux系统调用等方面。 1. **Linux环境**:Linux是一种开源操作系统,提供了丰富的命令行...

    Linux-C-program.rar_Linux/Unix编程

    在"Linux下C语言编程--进程通信、消息管理.pdf"文档中,你可能会学到如何使用这些系统调用,以及如何在C代码中实现这些通信机制。文档可能涵盖了以下内容: 1. **进程创建与管理**:讲解`fork`、`exec`系列函数的...

    Linux-C-function-参考手册

    这份"Linux-C-function-参考手册"提供了一套全面的指南,旨在帮助Linux编程者掌握C语言库中的函数,提升他们的编程效率和代码质量。下面,我们将深入探讨这个手册中可能涵盖的关键知识点。 1. **标准库函数**: - ...

    linux-sys.zh.pdf

    因为Linux内核是用C语言编写的,所以C语言是理解和操作Linux系统编程的基石。文档建议读者掌握C语言后,通过实践各种系统函数来提高对Linux系统编程的理解,并指导读者如何结合其他资料来深入学习。 总结来说,本篇...

    最新版linux kibana-7.13.3-linux-x86_64.tar.gz

    tar -zxvf kibana-7.13.3-linux-x86_64.tar.gz -C /opt/ ``` 接下来,配置 Kibana 的环境变量,编辑 `kibana-7.13.3-linux-x86_64/config/kibana.yml` 文件,设置 Elasticsearch 的地址和端口,以及服务器监听的 IP ...

    Linux系统管道和有名管道的通信机制

    Linux系统中的管道(pipe)和有名管道(named pipe或FIFO)是进程间通信(IPC,Inter-Process Communication)的重要机制。管道最早出现在Unix系统中,是Linux支持的基础IPC形式之一,尤其适用于父子进程或兄弟进程...

    linux应用程序开发-C语言基础学习

    适合初学者学习基于c语言的linux应用程序开发,本资源包含c语言的基本知识点,包括线程,锁,管道,消息队列,信号,共享内存,socket通信等等小案例,以及结业测试和答案。对于小白有很不错的参考作用。

    Postman-linux-x64-7.2.2.tar.gz

    1. 改进的集合 runner:集合runner允许用户自动化测试整个API集合,这对于持续集成和持续部署(CI/CD)流程至关重要。 2. 更强的协作功能:Postman支持团队协作,用户可以共享工作空间,实时同步项目,以及评论和...

    Linux-UNIX系统编程手册共两册文字可复制

    1. **进程管理**:讲解了如何创建、终止、控制进程,以及进程间通信(IPC)机制,如管道、信号、共享内存、套接字等。 2. **文件I/O**:涵盖打开、关闭、读写文件,以及对文件描述符的高级操作,如重定向、异步I/O...

    linux下C和java通过管道通信

    总结来说,Linux下的C和Java程序可以通过管道进行通信,这涉及到C语言的`pipe()`、`fork()`和`write()`/`read()`函数,以及Java的`java.nio.Pipe`类。理解这些基础知识对于实现进程间的协同工作至关重要。

    Linux-UNIX系统编程手册 上

    3. 进程间通信(IPC):为了实现数据和资源共享,Linux-UNIX系统编程支持多种进程间通信机制,包括管道(pipes)、命名管道(named pipes)、信号量(semaphores)、消息队列(message queues)、共享内存(shared ...

Global site tag (gtag.js) - Google Analytics