aio_read()
程序可能首先使用or发出异步 I/O 操作,aio_write()
然后调用exit()
以终止自身。
...
aio_write(aiocbp);
exit(0);
我的问题是,exit()
调用会等到异步 i/o 完成还是程序将直接终止?
我相信标准中的相关语言是:
进程终止的后果
在调用进程中打开的所有文件描述符、目录流、转换描述符和消息目录描述符都应关闭。
来源: 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
所以,它是未指定的;要么取消未完成的操作,要么操作阻塞直到它们完成。