代码编织梦想


前言

实现ps -aux|grep bash 命令

一、思路

在这里插入图片描述

二、代码实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int main()
{
    int fd[2];
    int ret = pipe(fd);
    if(ret < 0)
    {
        perror("pipe error");
        return -1;
    }
    pid_t pid = fork();
    if(pid < 0)
    {
        perror("fork error");
        return -1;
    }
    else if(pid > 0)
    {
        close(fd[0]);
        // 将标准输出重定向到管道的写端
        dup2(fd[1],STDOUT_FILENO);
        // 执行ps -aux
        execlp("ps","ps","-aux",NULL);

        perror("execlp error");
    }
    else
    {
        close(fd[1]);
        // 将标准输入重定向到管道的读端
        dup2(fd[0], STDIN_FILENO);
        execlp("grep", "grep", "bash", NULL);

        perror("execlp error");
    }
return 0;
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_43424329/article/details/128000123

码农翻身讲网络2:tcp协议与可靠传输_黄小斜的博客-爱代码爱编程

前言:本文主要想说一下TCP的知识, 比喻有不恰当之处,敬请包涵。   大明王朝天启四年, 清晨。 天色刚蒙蒙亮,我就赶着装满货物的马车来到了南城门, 这里是集中处理货物的地方 , 一队一队的马车都来到这里, 城头的士兵带着头盔,身披盔甲, 手持长枪, 虎视眈眈的注视这下面的动静。 城门口的大棚里乱哄哄的,是一群人围在一起赌钱, 这些家伙都穿着同样

面试笔记(一):系统编程(linux下进程虚拟空间布局、进程间的通信以及应用场景)_sinat_30240715的博客-爱代码爱编程

1.Linux下进程虚拟空间布局 在Linux中,每一个进程都抽象成一个task_struct结构体,称为进程描述符,存储着各方面的信息,如:打开的文件、信号、内存等。task_struct中的一个属性mm_struct管理着进程的所有虚拟内存,称为内存描述符。 在mm_struct结构体中,存储着进程各个内存段的开始以及结尾,如上图所示。这进程使用的物

进程间通信 一、传统进程间通信(管道通信)_北秋i的博客-爱代码爱编程

管道是UNIX系统最古老的的进程间通信方式(基本不再使用),历史上的管道通常是半双工(只允许单项数据流动),现在的系统大都可以全双工(数据可以双向流动) 管道可分为无名管道和有名管道两种;接下来将用代码的形式介绍两种管道实

读书笔记: unix编程实践教程_silhouette7的博客-爱代码爱编程

目录 第1章 Unix系统编程概述 第2章 用户、文件操作与联机帮助:编写who命令 第3章 目录与文件属性:编写ls 第4章 文件系统:编写pwd 第5章 连接控制:学习stty 第6章 为用户编程:终端控制和信号 第7章 事件驱动编程:编写一个视频游戏 第8章 进程和程序:编写命令解释器sh 第9章 可编程的shell、shell变量

Linux系统编程之多任务编程(IPC - 管道)-爱代码爱编程

多任务并发(2)IPC - 管道 进程间通信方式 一、管道   1、无名管道 pipe:适用于亲缘关系进程间的、一对一的通信特点:   (1)管道文件:这个文件很特殊,其实就是一块内存,不能使用open打开,也不可以使用lseek,可以使用read write读写。   (2)半双工:同一时刻只能单方向传输数据   (3)大小为 64K   

进程与线程-爱代码爱编程

任务管理:进程的过程,线程 进程:process1、进程的概念: (1)ps aux ①User ②pid 大于0的正整数 ③Stat 状态: 运行 休眠 僵尸进程 子进程 ④Time 运行的时间: ⑤COMMAND 用什么命令产生的。(2)进程的动态过程 申请空间,释放空间 (3)程序执行的单元 任务调度和资源分配的最小单元 ①进程是一个独立的可调动的活

第二章 进程管理-爱代码爱编程

1.进程概述 1.1 进程的概念和特征 概念:进程就是可以并发执行的程序在某个数据集合上的运行过程,是系统进行资源分配和调度的独立单位。进程的结构如下图所示。 对于进程的定义,不同的角度有不同的定义,还有以下较典型的定义: 1)进程是程序的一次执行。 2)进程是一个程序及其数据在处理机上顺序执行时所发生的活动。 3)进程是具有独立功能的程序在一个数

多进程之有名管道、无名管道-爱代码爱编程

管道:一种进程间通讯且是一种半双工的通讯方式,即在同一时间内只能由一方往管道发送或者接收数据(管道操作其实有点类似于我们往一个文件写入数据,另一个进程就把里面的数据读取出来) (下面是关于管道的简单介绍 , 某位不知名灵魂画手在线画图) 小绿和小红是一对让人羡慕的情侣,他们分别居住在一条河的两边(别问为什么他们在河两边,因为我不想让他们在一起),

Go实现管道(pipe)-爱代码爱编程

管道(pipe)是一种半双工的(或者说是单向的)通讯方式,它只能被用于父进程和子进程以及同祖先的子进程之间的通讯。 使用管道需注意以下四种情况:  - 如果所有指向管道写端的文件描述符都关闭了,仍然有进程从管道的读端读数据,那么管道中剩余的数据都被读取后,再次read会返回0,就像读到文件末尾一样。  - 如果有指向管道写端的文件描述符没关闭,持有管道写

进程间的通信_pipe2-爱代码爱编程

目录 一.进程间通信的介绍 1.1通信的目的 1.2进程间通信的分类 二.匿名管道 2.1概念 2.1.2使用步骤 2.2管道读写规则 2.3特点 2.4多进程派发任务的实现 2.5管道大小 三.命名管道 3.1概念 3.2命名管道的打开规则 3.3命名管道演示 3.3.1用命名管道实现serve&client通信