- 主题:linux文件的一个现象
在一个终端(终端1) 下面不停的向一个文件写入,例如:
while (1) { echo "abc" } > abc.txt
在另一终端(终端2)下面不停的读取这个文件,例如:
tail -f abc.txt
在打开一个终端(终端3),做下面的动作
1. 删除这个文件 rm abc.txt 居然可以成功,而且终端1和终端2的程序还可以正常运行
2. 重建这个文件 touch abc.txt, 也居然可以成功,而且终端1和终端2的程序还可以正常运行
3. 但这个新abc.txt和终端1,2的abc.txt好像是两个不同的文件,终端1还可以继续不停的写入,终端2还可以不停的读出新内容,但是终端3的abc.txt始终是空文件。
--
FROM 221.216.147.*
就是这样的
【 在 RI1657 的大作中提到: 】
: 在一个终端(终端1) 下面不停的向一个文件写入,例如:
: while (1) { echo "abc" } > abc.txt
:
: 在另一终端(终端2)下面不停的读取这个文件,例如:
: tail -f abc.txt
:
: 在打开一个终端(终端3),做下面的动作
: ..................
发自「今日水木 on SunOS 5.6」
--
FROM 223.104.176.*
这是常识
【 在 RI1657 的大作中提到: 】
: 在一个终端(终端1) 下面不停的向一个文件写入,例如:
: while (1) { echo "abc" } &g
:......
论坛助手,iPhone
--
FROM 58.247.23.*
文件名只是一个表象,要学会透过现象看本质,哈哈
【 在 RI1657 的大作中提到: 】
: 在一个终端(终端1) 下面不停的向一个文件写入,例如:
: while (1) { echo "abc" } > abc.txt
: 在另一终端(终端2)下面不停的读取这个文件,例如:
: ...................
--
FROM 122.210.84.*
不要 这样嘛
lz 问的也 没啥问题,文件名不是 文件的 唯一ID,inode才是
操作 文件都是 针对的fd, 删文件的 时候如果fd在被使用中
也仅仅是暂时隐藏了文件,已经 在操作 此fd的 进程 不受影响
然后 新建 同名文件其实 就是一个新文件了,inode是不一样的。
【 在 hyoga 的大作中提到: 】
: 标 题: Re: linux文件的一个现象
: 发信站: 水木社区 (Mon Mar 3 11:38:40 2025), 站内
:
: 文件名只是一个表象,要学会透过现象看本质,哈哈
: 【 在 RI1657 的大作中提到: 】
: : 在一个终端(终端1) 下面不停的向一个文件写入,例如:
: : while (1) { echo "abc" } > abc.txt
: : 在另一终端(终端2)下面不停的读取这个文件,例如:
: : ...................
:
: --
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 122.210.84.*]
--
FROM 124.207.188.194
1. 写文件读文件是文件操作。
2. 文件改名,删除文件,不是文件操作,是目录操作。
【 在 RI1657 的大作中提到: 】
: 在一个终端(终端1) 下面不停的向一个文件写入,例如:
: while (1) { echo "abc" } > abc.txt
: 在另一终端(终端2)下面不停的读取这个文件,例如:
: ...................
--
FROM 123.116.115.*
因为linux下文件的identity是inode,文件名只是inode的助记符。
【 在 RI1657 的大作中提到: 】
: 在一个终端(终端1) 下面不停的向一个文件写入,例如:
: while (1) { echo "abc" } > abc.txt
: 在另一终端(终端2)下面不停的读取这个文件,例如:
: ...................
--
FROM 117.135.80.*
你要是理解Inode,就能理解这个现象了。
【 在 RI1657 的大作中提到: 】
: 在一个终端(终端1) 下面不停的向一个文件写入,例如:
: while (1) { echo "abc" } > abc.txt
: 在另一终端(终端2)下面不停的读取这个文件,例如:
: ...................
--
FROM 120.245.94.*
简单清晰明了。我就是没想到这么好的回答所以才调侃了一下。
【 在 puke 的大作中提到: 】
: 1. 写文件读文件是文件操作。
: 2. 文件改名,删除文件,不是文件操作,是目录操作。
--
FROM 210.191.53.*
文件被删inode还在,可以理解
但此时输出的字符串物理上被写到哪里去了呢?在那个因删被隐藏的文件里?暂时放在内存里?或者直接被操作系统丢弃了?
【 在 DreamDreams 的大作中提到: 】
: 不要 这样嘛
: lz 问的也 没啥问题,文件名不是 文件的 唯一ID,inode才是
: 操作 文件都是 针对的fd, 删文件的 时候如果fd在被使用中
: ...................
--
FROM 111.8.143.*