* NIX read()/ write():它们是可重入的吗?

时间:2018-09-18 21:40:41

标签: c linux unix operating-system

如果在执行read(fd,buff,size)write(fd,buff,size)函数的过程中先占中断/线程然后返回到read()/write()中的位置,将会发生什么情况? 我们是否可以假设它将继续读取或写入文件描述符,而不会丢失数据和顺序?

假定没有共享变量可担心同步。

1 个答案:

答案 0 :(得分:1)

readwrite是系统调用,因此从用户空间的角度来看,它们是“原子的”-中断或线程无法“抢占”它们。中间”。在系统调用完成后,将传递任何信号-如果是中断信号,则可能导致“短”读或写(读或写的字节数少于预期的字节数)或EINTR错误值,在这种情况下用户级程序(在中断和系统调用之后恢复运行时)将需要进行处理。