`
haoningabc
  • 浏览: 1477836 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用C语言,实现接收管道输出的结果,并显示

    博客分类:
  • c
阅读更多
在shell里利用“|”管道干的事情就是io重定向,把“|”命令前的输出重定向到“|”后的标准输入中也就是c程序的stdin流中,所以要实现楼主所得功能程序只要跟原来的样就行了。例如
#include <stdio.h>

int main(void)
{
        char string[512];
        fgets(string ,512,stdin);
        puts(string);
        return 0;
}

--------------------------------------------------------------

example:


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>

int main(void) 
{
    int len  ;
    int apipe[2] ;
    int i ;
    char buf[256] ;
    if (pipe(apipe) == -1) {
        perror("can not create a pipe/n") ;
        exit(1) ;
    }
    while (fgets(buf , 256 , stdin)) {
        len = strlen(buf) ;
        if (write(apipe[1] , buf , len) != len) {
            perror("writing to pipe") ;
            break ;
        }
        for (i = 0 ; i < len ; i++) 
            buf[i] = '/0' ;
        len = read(apipe[0] , buf , 256) ;
        if (len == -1) {
            perror("reading form pipe") ;
            break ;
        }
            if (write(1 , buf , len) != len) {
            perror("writing to stdout") ;
            exit(1) ;
        }
    }
return 0 ;
}
分享到:
评论

相关推荐

    自己写的linux shell解释器 用C语言借助flex实现

    Linux Shell解释器是操作系统与用户交互的重要工具,它接收用户输入的命令并执行。这个项目是用C语言编写的,并且借助了flex工具来解析命令行输入。让我们深入了解一下这个自定义shell解释器的设计和实现。 首先,...

    linux C语言开发管道通信实例详解

    在Linux系统中,C语言是开发底层程序和系统级应用的常用工具,而管道(Pipe)是实现进程间通信的一种简单而有效的方法。本篇将深入解析如何在Linux环境下使用C语言开发管道通信实例。 首先,管道通信允许一个进程向另...

    Unix编程-单机版QQ源码-C语言版

    在这个项目中,我们关注的是如何使用C语言实现类似QQ的基本功能,如用户登录、好友列表、消息发送和接收。通过分析源码,我们可以了解到如何在Unix系统中构建客户端-服务器架构,以及如何实现基于特定协议(例如TCP/...

    用C语言写的shell源码

    标题 "用C语言写的shell源码" 描述的是一个基于C语言实现的命令行解释器,也就是我们常说的shell。Shell是操作系统与用户交互的重要接口,它接收用户的命令并执行相应的系统操作。在这个项目中,开发者已经实现了...

    linux下用C语言写的模拟shell环境的程序

    4. **重定向和管道**:shell还支持输入和输出重定向,如`ls &gt; file.txt`将`ls`的输出写入到`file.txt`,以及管道操作,如`ls | grep .txt`将`ls`的输出传递给`grep`作为输入。这需要使用`dup`和`pipe`系统调用来...

    linux C语言函数大全

    Linux系统中的C语言是开发系统级程序和底层应用的重要工具,...同时,理解并熟练掌握这些函数的使用,对于编写高效、稳定的Linux程序至关重要。通过阅读“Linux C语言函数大全”文档,可以更深入地学习和掌握这些知识。

    Linux操作之输入输出重定向和管道

    在C语言编程中,可以使用`pipe()`系统调用来创建管道,并通过父子进程实现数据的传递。 - **pipe()函数**:创建一个管道。 ```c int pipe(int fildes[2]); ``` - **父子进程**:父进程调用`fork()`函数创建子...

    c语言实现linux下多进程文本通信

    根据提供的实验报告,我们可以深入解析该实验所涉及的关键知识点,主要包括进程的概念理解、进程间通信方式,特别是使用System V信号量、共享内存以及信号处理机制实现的多进程文本通信技术。 ### 进程与程序的区别...

    c语言执行cmd命令获取本机IP等网络信息

    3. **读取输出**:使用 `fgets` 函数从管道中逐行读取输出,每读取一行就使用 `strcat` 连接到 `result` 字符串末尾。 4. **关闭管道**:当所有输出都读取完毕后,使用 `_pclose` 函数关闭管道。 5. **主函数处理**...

    linux下用C实现简单的命令解释器

    本项目涉及的主题是“Linux下用C实现简单的命令解释器”,这通常是指编写一个类似于shell的程序,它能够接收用户输入的命令,解析并执行这些命令。通过这种方式,我们可以学习到如何与Linux内核进行交互,理解进程的...

    C语言容易被问的面试题

    在C语言面试中,经常会遇到一些经典的问题,如计算序列和、进程与线程的区别以及管道的使用。这里我们将详细探讨这些知识点。 首先,我们来看计算1到n的和的问题。这个问题是一个典型的数学问题,可以通过高斯求和...

    C语言 Linux进程间通信

    以上代码示例通过实际的C语言代码展示了Linux环境下两种进程间通信方式:共享内存和管道的实现。这两种方式都有其独特的优势和应用场景。共享内存非常适合需要大量数据交换的情况,而管道则适用于简单数据传输或...

    在Linux下的网络编程demo,C语言实现了多进程和多线程的并发服务器案例,client-server demo.zip

    在这个“client-server demo.zip”压缩包中,包含了一个使用C语言实现的多进程和多线程并发服务器的示例。下面将详细探讨相关知识点。 1. **网络编程基础** - **套接字(Sockets)**: 套接字是网络通信的基本接口...

    linux下C语言开发笔记整理

    Linux下C语言开发笔记整理涵盖了从基础知识到网络通信的多个方面,主要围绕在Unix/Linux系统环境下使用C语言进行软件开发的各项技术与理论。以下是从文件提供的信息中提炼的知识点。 ### Unix/Linux系统基本命令和...

    基于C语言在 Linux 环境下模拟实现命令解释器【100012493】

    2. **Linux系统调用**:在Linux环境下,你需要了解如何使用系统调用来实现文件操作、进程控制、输入/输出等功能。例如,`fork()`用于创建子进程,`execve()`用于执行新的程序,`read()`和`write()`用于文件或设备的...

    windows 命名管道_重叠IO

    本文将深入探讨如何使用C语言实现一个基于命名管道的服务器端,并利用I/O重叠技术来提高性能。 首先,我们来理解一下命名管道的基本概念。命名管道在Windows中是一个内核对象,通过创建一个管道实例并赋予唯一的...

    编写一个用输入和输出流运算符进行的输入和输出的程序。从键盘输入两个数,分别对两个数进行加,减,乘和除的运算。

    总结起来,这个C++程序使用输入流`cin`从键盘获取用户输入的两个数,使用输出流`cout`显示计算结果。通过基本的算术运算符,程序实现了加、减、乘、除的功能,并以友好的格式显示出来。这是一个典型的命令行界面计算...

    消息的发送与接收的模拟实现

    2. **接收方**:每当接收到一个消息,就输出相关信息,并检查是否为结束信号。如果是,则取消消息队列并退出。 3. **发送方**:向消息队列发送一系列不同类型的消息,最后发送结束信号。 4. **清理**:发送方在确认...

Global site tag (gtag.js) - Google Analytics