执行异步I / O操作时退出

时间:2013-06-04 02:38:01

标签: c linux exit aio

程序可能首先使用aio_read()aio_write()发出异步I / O操作,然后调用exit()以终止自身。

...
aio_write(aiocbp);
exit(0);

我的问题是,exit()调用是否会等到异步i / o完成或程序将直接终止?

1 个答案:

答案 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

所以,它没有说明;要么未完成的操作被取消,要么操作将被阻止,直到完成为止。