如果在执行read(fd,buff,size)
或write(fd,buff,size)
函数的过程中先占中断/线程然后返回到read()/write()
中的位置,将会发生什么情况?
我们是否可以假设它将继续读取或写入文件描述符,而不会丢失数据和顺序?
假定没有共享变量可担心同步。
答案 0 :(得分:1)
read
和write
是系统调用,因此从用户空间的角度来看,它们是“原子的”-中断或线程无法“抢占”它们。中间”。在系统调用完成后,将传递任何信号-如果是中断信号,则可能导致“短”读或写(读或写的字节数少于预期的字节数)或EINTR
错误值,在这种情况下用户级程序(在中断和系统调用之后恢复运行时)将需要进行处理。