根据这个问题的答案:Why doing I/O in Linux is uninterruptible? Linux上的I / O是不可中断的(在睡眠中不可中断)。但是,如果我启动一个进程,在文件上说一个大'dd',并且在进程正在进行的时候我强行卸载Filesystem(文件所在的位置),进程就会被杀死。理想情况下它应处于悬挂状态,因为它正在睡觉并且是UN。
答案 0 :(得分:1)
“Uninterruptible”适用于内核处理的低级读/写操作。在C编程中,这些对应于C标准库上的read()
和write()
调用。可以中断实用程序并不能说明是否可以中断I / O操作,因为实用程序中的特定文件操作可能对应于许多低级I / O操作。
对于dd
,默认传输块大小为512字节,因此复制大文件可能包含许多I / O操作。 <{1}}可以在这些操作之间中断。我希望同样适用于大多数操作文件的实用程序。如果您可以强制它们使用大量数据块(例如,在dd
中为bs=
指定一个千兆字节大小的参数),那么您可能会看到低级别I / O操作是不可中断的