dll中的xmlrpc服务器,向自己发送信号?
我正在编写一些 dll(在 MSVC++2008 中的 Windows 上),它提供了一些作为 xmlrpc 服务器的功能。为了实现 xmlrpc 服务器,我使用 xmlrpc-c 库。
我可以通过一些不同的方式启动 xmlrpc 服务器。更有趣的是:
- 运行方法 - 这将永远运行 xmlrpc 服务器,所以 dll在服务器未终止之前无法控制。
- runOnce 方法 - 这将仅运行 xmlrpc 服务器来处理一个 RPC。如果没有请求,它将等待。
我无法长时间控制dll。我需要处理一些 RPC 并将控制权交还给使用 dll 的程序。当 dll 再次获得控制权时,处理下一个 RPC。
runOnce 看起来不错。但有可能没有 RPC 可以处理,而它会等待 RPC。这是不可接受的。
还有一个例外:
runOnce 中止等待 连接请求和返回 如果进程收到一个 信号。请注意,除非您有 该信号的处理程序,信号 可能会杀死整个过程, 所以设置一个信号处理程序——甚至一个 没有任何作用——如果你想的话 利用这个。但在Xmlrpc-c 1.06之前 (2006年6月),信号无效—— 没有办法让 runOnce 中止 等待并返回。
我可以使用它作为解决方法来恢复对 dll 的控制吗?是否可以从dll向自己发送信号?它在 Windows 上如何工作?
或者也许这个问题有更好的解决方案?
I'm writing some dll (on windows in MSVC++2008) which provides some functionality as xmlrpc server. To implement xmlrpc server I'm using xmlrpc-c library.
I can start xmlrpc server in some diffrent ways. More intresting are:
- run method - This will run xmlrpc server forever so dll can't control until server is not terminated.
- runOnce method - This will run xmlrpc server only to process one RPC. And if there is no request it will wait for that.
I can't keep control in dll for long time. I need to process some RPCs and give back control to program which is using dll. And process next RPCs when dll will get back control again.
runOnce looks ok. But there is possibility that there will be no RPCs to process and it will be waiting for one. That is unacceptable.
There is also one exception:
runOnce aborts waiting for a
connection request and returns
immediately if the process receives a
signal. Note that unless you have a
handler for that signal, the signal
will probably kill the whole process,
so set up a signal handler — even one
that does nothing — if you want to
exploit this. But before Xmlrpc-c 1.06
(June 2006), signals have no effect —
there is no way to make runOnce abort
the wait and return.
Can I use it as workaround go get back control to dll? Is it possible to send signal from dll to themself? How it works on windows?
Or maybe there is some better solution of this issue?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Windows 中不存在信号(使 Xmlrpc-c 库调用提前中止的信号)。
最好的解决方案是为服务器创建新线程。
Signals (of the kind that makes an Xmlrpc-c library call abort early) don't exist in Windows.
Best solution is to create new thread for server.