Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C程序在我完成后在哪里写输出;rm";在输出文件上?_C_Linux_Redhat - Fatal编程技术网

C程序在我完成后在哪里写输出;rm";在输出文件上?

C程序在我完成后在哪里写输出;rm";在输出文件上?,c,linux,redhat,C,Linux,Redhat,我在一个运行Redhat的计算集群上运行了一个相当糟糕的C程序,该程序进入了一个无限循环,在每个循环中它都打印了一行输出。当我意识到它正在快速创建一个最终会耗尽所有磁盘空间的文件时,我在终止程序之前对该输出文件运行了“rm”。不幸的是,在我最终终止程序之前,驱动器上的每“df-h”空间继续被占用 我现在找不到写入的文件,因此无法删除它。这样的文件将写入哪里?终止程序将释放磁盘空间。在此之前,文件将与其文件夹解除链接,但只要文件处于活动打开状态,它就不会停止存在(作为索引节点) 检查ls-l/pr

我在一个运行Redhat的计算集群上运行了一个相当糟糕的C程序,该程序进入了一个无限循环,在每个循环中它都打印了一行输出。当我意识到它正在快速创建一个最终会耗尽所有磁盘空间的文件时,我在终止程序之前对该输出文件运行了“rm”。不幸的是,在我最终终止程序之前,驱动器上的每“df-h”空间继续被占用


我现在找不到写入的文件,因此无法删除它。这样的文件将写入哪里?

终止程序将释放磁盘空间。在此之前,文件将与其文件夹解除链接,但只要文件处于活动打开状态,它就不会停止存在(作为索引节点)

检查
ls-l/proc//fd
以查看文件是什么;本质上,内核对该进程的所有了解都在
/proc/

请在此处阅读更多有关如何处理这些问题的信息:
它正在写入您删除的文件

根据手册页:

unlink()函数应删除指向文件的链接。如果路径名为 符号链接,unlink()应删除以路径命名的符号链接 且不应影响任何以文件内容命名的文件或目录 象征性的联系。否则,unlink()将删除名为的链接 路径指向的路径名,并应减少 链接引用的文件

当文件的链接计数变为0且没有进程打开该文件时, 应释放文件占用的空间,且文件不应 更长的时间可以访问。如果一个或多个进程在 删除最后一个链接后,应在取消链接之前删除该链接() 返回,但文件内容的删除应推迟到 对文件的所有引用都将关闭


在Unix/Linux中,文件是一种数据结构(在磁盘上)。只要系统中存在指向它的指针(或引用,见下文),数据就不会被删除。然而,一旦不再有指针,它就是

指针基本上可以让程序打开文件。一旦程序(或这些程序)终止,该指针将无效

指针也可以是文件系统目录中的一个条目。这将是您使用
ls
或在图形文件管理器中看到的条目。因此,一旦删除此项,该指针也将被删除,但不会删除其他指针!请注意,(同一)文件系统中可能有多个这样的条目。这些称为硬链接(指向一个(文件)关系的多个(指针)

实际上,该文件统计了所有这些引用(对于目录条目/硬链接,永久在磁盘上;对于打开的文件(“文件句柄”),永久在系统内存中)。对于每个打开的文件(“文件句柄”),后者会消耗宝贵的系统内存,这也是为什么文件总是关闭并且应该尽快关闭的原因之一

因此,一旦删除了所有指针,文件将无法再访问,因此将被删除。顺便说一句,这被称为垃圾收集(如果这是现在发明的,它可能被称为“内存回收”),类似于Java和Python等语言对未使用对象所做的操作


我之所以称它为“指针”是因为它的相似性:它实际上是数据结构的一个特定索引(地址),称为指向的位置,而不是目录项。

程序说它在哪里写入输出?