设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
Linux 综合讨论区 —— LinuxSir.cn
›
shell进阶应用、shell编程
›
关于极简单之重定向的一个很搞笑的问题 ...
1
2
/ 2 页
下一页
返回列表
查看:
1020
|
回复:
12
关于极简单之重定向的一个很搞笑的问题
[复制链接]
烤火的雪人
烤火的雪人
当前离线
积分
26
IP卡
狗仔卡
发表于 2005-2-17 12:45:18
|
显示全部楼层
|
阅读模式
先弄个干净的环境,比如我在/下建立一个文件夹test
我到test文件夹下,打ls,是不是什么都没?当然啦,空文件夹
那我又打 ls > abc ,也就是把ls出来的内容写到abc里面去,那正常的顺序是先ls,然后把ls出来的内容再重定向
但是cat abc 后,里面的内容不是空的,而是已经有abc这行了
这说明什么?难道"ls > abc"时是先建立空abc文件,再ls,再写入到abc?
或者是bug?不可能有那么低级的bug吧?
谁来说说
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
linux_now
linux_now
当前离线
积分
613
IP卡
狗仔卡
发表于 2005-2-17 13:45:02
|
显示全部楼层
应该是要先大开袋子,才能放东西吧
没人更正?自己来,呵呵:
[HTML]ls |tee abc[/HTML]
回复
支持
反对
使用道具
举报
显身卡
弥敦路九号
弥敦路九号
当前离线
积分
1139
IP卡
狗仔卡
发表于 2005-2-17 21:26:11
|
显示全部楼层
应是先创建abc 再把 ls 的内容(已经有了abc)写入abc
回复
支持
反对
使用道具
举报
显身卡
jhuangjiahua
jhuangjiahua
当前离线
积分
9502
IP卡
狗仔卡
发表于 2005-2-18 14:20:59
|
显示全部楼层
[php]
hua@hua:~/tmp$ mkdir test
hua@hua:~/tmp$ cd test/
hua@hua:~/tmp/test$ ls
hua@hua:~/tmp/test$ ls > abc
hua@hua:~/tmp/test$ cat abc
abc
hua@hua:~/tmp/test$
[/php]
bash 跟 DOS/CMD 不同 , 重定向是同时进行的
回复
支持
反对
使用道具
举报
显身卡
liquid_zigong
liquid_zigong
当前离线
积分
205
IP卡
狗仔卡
发表于 2005-2-18 17:37:13
|
显示全部楼层
对,也得小心这种问题:
sort sort.txt > sort.txt
由于重定向的同时性,sort.txt的内容将丢失。
回复
支持
反对
使用道具
举报
显身卡
abigant
abigant
当前离线
积分
121
IP卡
狗仔卡
发表于 2005-2-19 13:27:09
|
显示全部楼层
到底是同时的还是有先后的?同时的情况下应该只有在并行CPU中的吧?我感觉还是有先后的,那位能解释清楚一下?
回复
支持
反对
使用道具
举报
显身卡
烤火的雪人
烤火的雪人
当前离线
积分
26
IP卡
狗仔卡
楼主
|
发表于 2005-2-19 14:08:01
|
显示全部楼层
我觉得这有点类似于先有鸡还是先有蛋一样复杂和有趣
回复
支持
反对
使用道具
举报
显身卡
liquid_zigong
liquid_zigong
当前离线
积分
205
IP卡
狗仔卡
发表于 2005-2-19 20:57:01
|
显示全部楼层
在逻辑上是并行的,在实现上是串行的。因为必竞只有一个CPU(IA32)。
管道是这样实现的:
进程1 系统文件句柄表 进程2
标准输出 -----> 映射 -----> 标准输入
显然两个进程必须同时存在。
进程1向进程2写入n(一般是4096b)个数据后暂停,等待进程2执行并处理,然后进程1醒过来继续。如是这个操作十分快的话(<10e-1秒)人类就会认为它们是并行的。
那么为什么sort sort.txt > sort.txt会失败呢?
首先sh启动sort的一个子进程和一个内部子进程(同时的),把sort的标准输出映射到内部子进程的输入上,然后不幸的是,">" 命令子进程以fp = fopen("sort.txt", "w");打开文件,所有sort.txt被盖了。而sort不会读出任何数据。
回复
支持
反对
使用道具
举报
显身卡
abigant
abigant
当前离线
积分
121
IP卡
狗仔卡
发表于 2005-2-20 08:54:25
|
显示全部楼层
楼上说的很有道理,我同意,两个进程同时存在,轮流执行。
回复
支持
反对
使用道具
举报
显身卡
linux_now
linux_now
当前离线
积分
613
IP卡
狗仔卡
发表于 2005-2-20 09:18:18
|
显示全部楼层
ls |tee abc
则abc里面没有abc文件列表;
这个应该怎么解释呢?
:thank
回复
支持
反对
使用道具
举报
显身卡
下一页 »
1
2
/ 2 页
下一页
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
Redhat/Fedora/CentOS Linux
BSD 讨论专题
Archlinux讨论区
Mandriva Linux
LFS(LinuxfromScratch)
硬件设备 Linux 驱动
SuSE Linux
服务器架设、应用、维护
Linux 输入开发与研究
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表