如果文件系统已满,进程会发生什么?内核是否向我们发送了一个关闭信号,如果有,则发出什么信号。显然,如果程序写入文件系统,程序可能会崩溃,但我很好奇这是如何发生的(在内核/操作系统详细信息中)。
答案 0 :(得分:3)
如果文件系统填满,进程会发生什么?
在完整分区上需要额外磁盘空间的操作(如创建或附加到文件)失败,errno
为ENOSPC
。
没有信号被发送,因为完整的文件系统不是一个必要的信号的关键条件。这是一个例行的,容易处理的错误。
答案 1 :(得分:1)
当文件系统已满时,程序没有理由崩溃。显然文件写入会失败,但编写良好的程序应该能够应对 - 在C中,这意味着fopen
返回NULL
或ferror
返回非零值我已经多次遇到这种情况,并且可能会发生一些令人讨厌的事情,例如用空白版本覆盖文件,但从不会导致程序崩溃。如果确实发生了,可能是因为该程序的作者试图使用NULL
文件描述符或类似的问题,在这种情况下,程序将像往常一样收到SIGSEGV
。