{eval=Array;=+count(Array);}
这个问题需要考虑两个问题,一个是cp进程写文件的时候有没有获取读锁,另一个是读进程是以阻塞方式还是非阻塞方式打开文件。
如果cp进程获取了读锁,而读进程是以非阻塞方式打开文件,那么是不可能读取成功的;
如果读进程以阻塞方式打开文件,那么会一直等待直到cp进程释放读锁,最终会读取成功;
如果cp进程没有获取读锁,读进程以非阻塞方式打开,如果读进程比写进程快,那就会读取失败,如果读进程比写进程慢,那还是有机会读取成功的。
如果读进程以阻塞方式打开文件,只要没遇到文件结束符EOF,那么读进程会边读边等待,直到cp进程完成写入,读进程也就完成读取。
综上所述,如果你的读进程是以阻塞方式读取文件,那么最终是一定会读取成功的,如果是以非阻塞方式读取文件,那么可能会面临读取失败的风险。
你可以做一个简单的实验验证一下,用ctrl-z先将cp写进程放入bash后台暂停,然后看看读进程的反应,然后再将写进程继续运行,再看看读进程反应
0
回答0
回答0
回答0
回答0
回答1
回答0
回答2
回答0
回答0
回答