1.open函数

    这个函数是打开一个文件(文件名叫pathname),以 flag 权限打开,flag 包括了以下几种 O_RDONLY(只读), O_WRONLY(只写), O_RDWR(读写),当文件打开成功时,函数返回所要打开的文件名, 当函数执行失败时,函数返回 -1.
2.write函数

     write函数是打开一个文件描述符为 fd 的文件,并将该文件的内容写到 buf 中, 同时期望写 count 个字节,当函数执行成功时返回往 buf 中所写的字节数, 失败时返回值为 -1
3.之前编写的自主shell进行修改,使其支持输入/输出/追加重定向

#include<stdio.h>
#include<fcntl.h>
#include<sys/wait.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>int main()
{char buf[1024] = { 0 };while(1){printf("mysell#");fflush(stdout);size_t s = read( 0, buf, sizeof( buf ) );if(s > 0){buf[s - 1] = '\0';printf("%s\n", buf);}char* start = buf;char* _argv[32];char* argnext[32];_argv[0] = buf;int i = 1;while(*start){if(*start == ' '){*start = '\0';start ++;_argv[i++] = start;}else{start ++;}}_argv[i] = NULL;pid_t pid;pid = fork();if(pid < 0){perror("fork");exit(1);}if(pid == 0){int i = 0;int fd = 0;for(i = 0; _argv[i] != NULL; i++){if(strcmp(_argv[i], ">") == 0){char* file_name = _argv[i + 1];_argv[i] = NULL;close(1);fd = open(file_name, O_CREAT | O_WRONLY, 0664);break;}}execvp(_argv[0], _argv);close(fd);}else if(pid > 0){int st = 0;waitpid(pid, NULL, 0);}}return 0;
}

    上一次写了一个简单的shell, 这次给其加上输入重定向
                            

    虽然加入了输出重定向,但还没有加入输入重定向以及追加重定向,以及感到,在下一篇当中将会给其加入输入重定向, 追加重定向以及管道。

修改之前的myshell使之支持输入输出重定向相关推荐

  1. 修改sqlarchemy源码使其支持jdbc连接mysql

    注意:本文不会将所有完整源码贴出,只是将具体的思路以及部分源码贴出,需要感兴趣的读者自己实验然后实现吆. 缘起 公司最近的项目需要将之前的部分业务的数据库连接方式改为jdbc,但由于之前的项目都使用s ...

  2. 修改Mac默认设置使Mac支持NTFS硬盘的读写

    前言 NTFS (New Technology File System),是 Windows环境的文件系统,当然,MacOS系统也支持,只不过因为竞品和专利的原因,Mac上的NTFS读写功能被隐藏了. ...

  3. 成功修改fastreport3.15,使其支持中日韩四(CJK)中编码PDF的导出

    几天的辛苦总算有点结果,我这个几乎算是Delphi门外汉的家伙凭着对fastreport和pdf的喜好,实现了对简体PDF,繁体PDF,韩文PDF以及日文PDF的输出,这里记录下,算是留作纪念. 不过 ...

  4. java nifty_jme3与nifty gui1.3结合,修改使其支持中文的输入与显示

    1.nifty gui1.3中修改代码,使其支持中文的输入: com.jme3.input.awt.AwtKeyInput类,添加toAWTCode(int key)方法,将jme3中的keyCode ...

  5. 用ffmpeg修改MP4文件头信息,使其支持流式加载及播放

    经常有用户反映,有些网页中加载的mp4文件,有的可以加载一点就开始播放,有的就必须全部加载完才能播. 经核实,主要是头信息的数据顺序有关,用工具:mp4info.exe可以查看mp4文件的结构信息: ...

  6. 如何修改 SAP ABAP OData 模型,使其支持 $expand 操作试读版

    正如本教程的开篇介绍文章SAP OData 开发教程 - 从入门到提高(包含 SEGW, RAP 和 CDP)所提到的,SAP OData 服务开发,从实现技术上来说,可以分为三大类.因此本教程也分为 ...

  7. mysql 支持 pdo_使php支持pdo_mysql_睿合科技

    使php支持pdo_mysql_睿合科技 发表时间:2020-08-27 14:06:19 文章作者: 浏览次数: 1.下载pdo_mysql包 wget http://pecl.php.net/ge ...

  8. oracle数字类型ef映射,Entity Framework 学习中级篇5—使EF支持Oracle9i - ♂风车车.Net - 博客园...

    从Code MSDN上下载下来的EFOracleProvider不支持Oracle9i.但是,目前我所使用的还是Oracle9i.为此,对EFOracleProvider修改了以下,以便使其支持Ora ...

  9. 生成自己的数字证书使网站支持HTTPS

    生成自己的数字证书使网站支持HTTPS 一.了解keytool命令 二.为服务器端生成证书 三.为客户端生成证书 四.让客户端和服务器相互信任 1. 让服务器信任客户端 2. 让客户端信任服务器 五. ...

最新文章

  1. 田渊栋的2021年终总结:多读历史!历史就是一个大规模强化学习训练集
  2. Spring----Spring Boot Rest的使用方法
  3. HDU 1009 - FatMouse' Trade (部分背包问题)
  4. MassTransit中RequestResponse基本使用
  5. 罗马音平假名片假名转换器_零基础日语萌新该如何学习五十音?
  6. python的setting怎么找_python代码中使用settings
  7. hdu 2046 骨牌铺方格
  8. 寒假作业3(传说中的写软件)
  9. Https下字体文件无法加载的解决方案
  10. 利用jsoup 如何从网页中下载图片
  11. python批量音频转格式_GitHub - shede333/SWConvertVideoToAudio: Python批量转换 视频 为 音频MP3(即提取音频文件)...
  12. java并发增强工具_0318 guava并发工具
  13. 怎么检查计算机和打印机是否连接网络,如何检查电脑中是否已成功连接网络打印机...
  14. mysql implode_php implode函数应用
  15. Linux 重新加载 nginx 配置命令
  16. 中国千家主要规划设计勘察单位
  17. javascript 递归乘阶
  18. iOS主题/皮肤之SakuraKit
  19. localhost,127.0.0.1,本机IP
  20. 百度地图注册:申请百度地图秘钥

热门文章

  1. 如何查看Ubuntu版本,以及Linux内核版本??
  2. 媒资管理系统的应用与发展
  3. 输入参数的数目不足_sklearn.decomposition.PCA 参数速查手册
  4. java文本框双击可编辑_java swing 文本域双击变为可编辑
  5. python 发邮件_python发邮件
  6. 图像分割-二阶导数零交叉点的含义
  7. 01背包怎么不重复_带有重复物品的背包
  8. c# 无法将类型隐式转换_C#中的隐式类型数组
  9. Java PropertyPermission newPermissionCollection()方法与示例
  10. 十八、对已经找到轮廓的图像进行测量