关于内核态与用户态以及重定向

内核态与用户态:
用户态如何切换到内核态?
发起系统调用。fwrite write read memcpy(中间两个是系统调用)

重定向:改变数据流向,将写入指定文件的数据,改变之后写入到另外一个文件
重定向指的是描述符的重定向—因为描述符并没有改变,改变的是描述符所对应的文件信息(1号座位的故事)

如何实现重定向:
1)通过close实现
2)还可以通过重定向接口实现:dup2(int oldfd ,int newfd)。 让newfd也指向了oldfd所指的文件,如果newfd本身也打开了一个文件,则关闭newfd所指向的文件,此时newfd和oldfd都指向了oldfd所指向的文件

minishell中的重定向实现:
Ls -l >> test.txt

在命令字符串中若有重定向符号

追加重定向
清空重定向
如果遇到符号,则从符号其实位置进行截断,前边是命令,后边是重定向文件
字符串检测>>:重定向符号之前是命令及参数,按照原先解析方式进行解析即可。
重定向符号>>之后,有要重定向的文件名称
在子进程中,进行程序替换之前
按照重定向方式(追加/清空)打开文件,dup2(fd,1)
因为ls浏览目录的内容—实际上就是将目录中的文件名称打印到标准输出
重定向的操作就是,将要打印到标准输出的数据写入到新文件中
因此子进程的操作就是:打开新文件–》标准输出重定向dup2()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值