没有更新以反映新文件吗?
ls not updating to reflect new files?
我正在 运行创建一个在特定目录中创建一堆文件的程序,我想观看文件的创建过程。
我打开两个终端 windows 并将其中一个(称为终端 A)cd 到程序目录(这样我就可以 运行 它)和另一个(终端 B)到写入输出文件的目录(此输出目录开始时为空)。当我在终端 A 的输出目录中 touch
一个文件然后在终端 B 中 ls
时,新文件出现——所有这些都正常运行。
但是,在我 运行 终端 A 中的程序之后,当我在终端 B 中执行 ls
时,新文件的 none 出现了。奇怪的是,如果我这样做 cd .
然后 ls
在终端 B 中,现在列出了新文件。
是什么导致了这种行为,我可以解决这个问题吗?
编辑:关于正在写入文件的信息。
- 有些是通过在 Python 2 中调用
cv2.imwrite(...)
,使用 OpenCV 编写的。
- 有些是由
ofstream
用 C++ 编写的。
这一系列事件似乎重现了这个问题。
您在终端 A 中的程序可能会删除终端 B 的当前目录,然后使用相同的名称重新创建它,因此 ls
无法正常工作,因为最初 cd
通过终端 B 不再存在。但是,cd .
将您带到(现在)重新创建的目录,此时 ls
再次工作。
如果您的第二个目录被删除并重新创建,就会发生这种情况。
即使目录被删除,但某些进程将其作为当前目录,它的文件描述符将保持打开状态,并且 ls
将显示旧内容。
执行 cd .
将强制关闭现在不存在的目录的描述符并再次重新打开它,现在显示新内容。
我正在 运行创建一个在特定目录中创建一堆文件的程序,我想观看文件的创建过程。
我打开两个终端 windows 并将其中一个(称为终端 A)cd 到程序目录(这样我就可以 运行 它)和另一个(终端 B)到写入输出文件的目录(此输出目录开始时为空)。当我在终端 A 的输出目录中 touch
一个文件然后在终端 B 中 ls
时,新文件出现——所有这些都正常运行。
但是,在我 运行 终端 A 中的程序之后,当我在终端 B 中执行 ls
时,新文件的 none 出现了。奇怪的是,如果我这样做 cd .
然后 ls
在终端 B 中,现在列出了新文件。
是什么导致了这种行为,我可以解决这个问题吗?
编辑:关于正在写入文件的信息。
- 有些是通过在 Python 2 中调用
cv2.imwrite(...)
,使用 OpenCV 编写的。 - 有些是由
ofstream
用 C++ 编写的。
这一系列事件似乎重现了这个问题。
您在终端 A 中的程序可能会删除终端 B 的当前目录,然后使用相同的名称重新创建它,因此 ls
无法正常工作,因为最初 cd
通过终端 B 不再存在。但是,cd .
将您带到(现在)重新创建的目录,此时 ls
再次工作。
如果您的第二个目录被删除并重新创建,就会发生这种情况。
即使目录被删除,但某些进程将其作为当前目录,它的文件描述符将保持打开状态,并且 ls
将显示旧内容。
执行 cd .
将强制关闭现在不存在的目录的描述符并再次重新打开它,现在显示新内容。