Phe*_*ix7 10 c sockets unix-socket
我有一个服务器应用程序,在特定的路径中创建一个UNIX域套接字,其名称和bind()s.
我只需要在应用程序代码中故意关闭/停止应用程序时删除套接字; 否则它需要开放.我该怎么做呢?
谢谢!
编辑:考虑我从终端内部启动并运行我的应用程序.
小智 15
你正在努力使它变得更加困难.放在unlink()右前方bind().这就是其他人如何做到的.(例如:BSD syslogd,基于unix-domain-socket的经典服务之一)
如果您的应用程序有多个退出点,并且您不想修改每个退出点来调用清理例程,那么您可以使用“脏”方法。
当套接字刚刚创建时,向 注册清理例程atexit(3)。unlink(2)当应用程序正常终止时,将调用例程(只是对 的调用)。但如果应用程序通过信号终止,则不会调用它。因此,如果您想在收到 SIGINT 和类似信号后进行清理,您还需要正确设置信号处理程序。
| 归档时间: |
|
| 查看次数: |
11397 次 |
| 最近记录: |