- 浏览: 1476956 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
在shell里利用“|”管道干的事情就是io重定向,把“|”命令前的输出重定向到“|”后的标准输入中也就是c程序的stdin流中,所以要实现楼主所得功能程序只要跟原来的样就行了。例如
--------------------------------------------------------------
example:
#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 ; }
发表评论
-
weak_ptr解决循环引用问题
2021-03-08 21:12 1170C++11引入的三种智能指 ... -
gcc链接顺序
2019-10-12 18:25 631代码在 https://github.com/killinux ... -
c++11的function和bind
2019-09-10 16:12 532参考:https://www.cnblogs.co ... -
opengl的helloworld
2014-10-22 19:41 9021.我提供一个不需要配置环境就可运行的源码。 glut.h放在 ... -
画图板用c++实现和用js实现的websocket版本
2014-10-17 13:02 2129画图板 opencv的c++ #include <o ... -
c语言内存
2014-07-02 10:26 6941、C中内存分为五个区 栈:用来存放函数的形参和函数内的局部变 ... -
重定向stdout到文件
2014-03-05 18:37 5484把stdout重定向到文件 两种方法: 第一种方法没有恢复 ... -
通过nginx远程执行shell
2014-03-03 10:26 5083saltstack远程执行shell,远程管理等返回json已 ... -
c的urldecode
2014-02-28 18:22 1363#include <stdio.h> #in ... -
pthread的pthread_mutex_lock 的使用
2014-02-25 16:54 26142参考http://haoningabc.iteye.com/b ... -
c调用c++
2013-10-12 15:24 1177参考 http://www.cppblog.com/frank ... -
关于char * 与 char[]
2013-04-22 21:56 961问题引入: 在实习过程中发现了一个以前一直默认的错误,同样ch ... -
单向链表翻转
2012-12-25 23:41 1019临时笔记,创建一个链表 #include <stdl ... -
trie 树 的代码
2012-12-14 23:20 1139想起搜狐老大的一句话 看代码先看h文件,擦,当初感觉他这句话很 ... -
指针函数与函数指针的区别
2012-12-14 22:44 1195一、 1、指针函数是指带指针的函数,即本质是一个函数。函数返回 ... -
指针和数组
2012-11-14 22:40 1066转载http://kan.weibo.com/con/3512 ... -
js备份
2012-10-31 23:56 1724<!DOCTYPE HTML PUBLIC " ... -
线程的helloworld
2012-10-30 21:51 1603#include<stdio.h> #inc ... -
c的书籍
2012-10-30 10:56 1128http://www.acm.uiuc.edu/webmonk ... -
深入理解计算机系统第三章笔记 gcc
2012-10-24 12:11 1529随便写个最简单程序 然后gcc -S 看汇编 在gcc -C ...
相关推荐
Linux Shell解释器是操作系统与用户交互的重要工具,它接收用户输入的命令并执行。这个项目是用C语言编写的,并且借助了flex工具来解析命令行输入。让我们深入了解一下这个自定义shell解释器的设计和实现。 首先,...
在Linux系统中,C语言是开发底层程序和系统级应用的常用工具,而管道(Pipe)是实现进程间通信的一种简单而有效的方法。本篇将深入解析如何在Linux环境下使用C语言开发管道通信实例。 首先,管道通信允许一个进程向另...
在这个项目中,我们关注的是如何使用C语言实现类似QQ的基本功能,如用户登录、好友列表、消息发送和接收。通过分析源码,我们可以了解到如何在Unix系统中构建客户端-服务器架构,以及如何实现基于特定协议(例如TCP/...
标题 "用C语言写的shell源码" 描述的是一个基于C语言实现的命令行解释器,也就是我们常说的shell。Shell是操作系统与用户交互的重要接口,它接收用户的命令并执行相应的系统操作。在这个项目中,开发者已经实现了...
4. **重定向和管道**:shell还支持输入和输出重定向,如`ls > file.txt`将`ls`的输出写入到`file.txt`,以及管道操作,如`ls | grep .txt`将`ls`的输出传递给`grep`作为输入。这需要使用`dup`和`pipe`系统调用来...
Linux系统中的C语言是开发系统级程序和底层应用的重要工具,...同时,理解并熟练掌握这些函数的使用,对于编写高效、稳定的Linux程序至关重要。通过阅读“Linux C语言函数大全”文档,可以更深入地学习和掌握这些知识。
在C语言编程中,可以使用`pipe()`系统调用来创建管道,并通过父子进程实现数据的传递。 - **pipe()函数**:创建一个管道。 ```c int pipe(int fildes[2]); ``` - **父子进程**:父进程调用`fork()`函数创建子...
根据提供的实验报告,我们可以深入解析该实验所涉及的关键知识点,主要包括进程的概念理解、进程间通信方式,特别是使用System V信号量、共享内存以及信号处理机制实现的多进程文本通信技术。 ### 进程与程序的区别...
3. **读取输出**:使用 `fgets` 函数从管道中逐行读取输出,每读取一行就使用 `strcat` 连接到 `result` 字符串末尾。 4. **关闭管道**:当所有输出都读取完毕后,使用 `_pclose` 函数关闭管道。 5. **主函数处理**...
本项目涉及的主题是“Linux下用C实现简单的命令解释器”,这通常是指编写一个类似于shell的程序,它能够接收用户输入的命令,解析并执行这些命令。通过这种方式,我们可以学习到如何与Linux内核进行交互,理解进程的...
在C语言面试中,经常会遇到一些经典的问题,如计算序列和、进程与线程的区别以及管道的使用。这里我们将详细探讨这些知识点。 首先,我们来看计算1到n的和的问题。这个问题是一个典型的数学问题,可以通过高斯求和...
以上代码示例通过实际的C语言代码展示了Linux环境下两种进程间通信方式:共享内存和管道的实现。这两种方式都有其独特的优势和应用场景。共享内存非常适合需要大量数据交换的情况,而管道则适用于简单数据传输或...
在这个“client-server demo.zip”压缩包中,包含了一个使用C语言实现的多进程和多线程并发服务器的示例。下面将详细探讨相关知识点。 1. **网络编程基础** - **套接字(Sockets)**: 套接字是网络通信的基本接口...
Linux下C语言开发笔记整理涵盖了从基础知识到网络通信的多个方面,主要围绕在Unix/Linux系统环境下使用C语言进行软件开发的各项技术与理论。以下是从文件提供的信息中提炼的知识点。 ### Unix/Linux系统基本命令和...
2. **Linux系统调用**:在Linux环境下,你需要了解如何使用系统调用来实现文件操作、进程控制、输入/输出等功能。例如,`fork()`用于创建子进程,`execve()`用于执行新的程序,`read()`和`write()`用于文件或设备的...
本文将深入探讨如何使用C语言实现一个基于命名管道的服务器端,并利用I/O重叠技术来提高性能。 首先,我们来理解一下命名管道的基本概念。命名管道在Windows中是一个内核对象,通过创建一个管道实例并赋予唯一的...
总结起来,这个C++程序使用输入流`cin`从键盘获取用户输入的两个数,使用输出流`cout`显示计算结果。通过基本的算术运算符,程序实现了加、减、乘、除的功能,并以友好的格式显示出来。这是一个典型的命令行界面计算...
2. **接收方**:每当接收到一个消息,就输出相关信息,并检查是否为结束信号。如果是,则取消消息队列并退出。 3. **发送方**:向消息队列发送一系列不同类型的消息,最后发送结束信号。 4. **清理**:发送方在确认...