Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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
Unix 编写系统调用并阻止进程_Unix_Linux Kernel_Posix_System - Fatal编程技术网

Unix 编写系统调用并阻止进程

Unix 编写系统调用并阻止进程,unix,linux-kernel,posix,system,Unix,Linux Kernel,Posix,System,在UNIX中:read系统调用会阻止进程,直到完成 write系统调用的行为如何?它在磁盘上写入时是否会阻止进程 对于写入系统调用,我指的是写入(fd、bf、nbyte)过程调用。否,它只会阻塞进程,直到缓冲区的内容复制到内核空间。这通常是非常短的时间,但在某些情况下,它可能会等待某些磁盘操作: 如果没有可用页面,则必须释放一些页面。如果有干净的页面,它们的内容可以被丢弃(因为它只是从磁盘复制),但如果没有,一些页面必须被清洗,这涉及到写操作。由于页面会在几秒钟后自动清洗,如果您有足够的内存,

在UNIX中:read系统调用会阻止进程,直到完成

write系统调用的行为如何?它在磁盘上写入时是否会阻止进程


对于写入系统调用,我指的是写入(fd、bf、nbyte)过程调用。

否,它只会阻塞进程,直到缓冲区的内容复制到内核空间。这通常是非常短的时间,但在某些情况下,它可能会等待某些磁盘操作:

  • 如果没有可用页面,则必须释放一些页面。如果有干净的页面,它们的内容可以被丢弃(因为它只是从磁盘复制),但如果没有,一些页面必须被清洗,这涉及到写操作。由于页面会在几秒钟后自动清洗,如果您有足够的内存,这种情况几乎不会发生
  • 如果写入到文件的中间,则可能需要读取周围的内容,因为页面缓存具有页面粒度(在大多数平台上对齐4 KiB块)。这种情况很少发生,因为很少会在不读取文件的情况下更新文件,而且如果先读取,则内容已经被缓存

如果您想等到数据真正到达板上,您需要跟进。

我很高兴您提到它“阻止进程,直到缓冲区的内容被复制到内核空间”