程序可能首先使用aio_read()
或aio_write()
发出异步I / O操作,然后调用exit()
以终止自身。
...
aio_write(aiocbp);
exit(0);
我的问题是,exit()
调用是否会等到异步i / o完成或程序将直接终止?
答案 0 :(得分:4)
我相信标准中的相关语言是:
流程终止的后果
应关闭调用过程中打开的所有文件描述符,目录流,转换描述符和消息目录描述符。
来源:http://pubs.opengroup.org/onlinepubs/9699919799/functions/_Exit.html
和
当调用close()时,如果存在针对fildes的未完成的可取消异步I / O操作,则可能取消该I / O操作。未取消的I / O操作完成,就好像尚未发生close()操作一样。所有未取消的操作都应完成,就好像close()被阻止一样,直到操作完成。 close()操作本身不需要阻止等待这样的I / O完成。是否取消任何I / O操作,以及在close()时可能取消哪个I / O操作是实现定义的。
来源:http://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html
所以,它没有说明;要么未完成的操作被取消,要么操作将被阻止,直到完成为止。