8

ØMQ ドキュメントのこの例に従って、単純なレシーバーを作成しようとしています。この例では、無限ループを使用しています。すべてがうまく機能します。ただし、MS Windows では、CTRL+C を押して KeyboardInterrupt を発生させても、ループは中断されません。recv()メソッドがどういうわけか例外を無視しているようです。ただし、プロセスを強制終了するのではなく、CTRL + C を押してプロセスを終了したいと考えています。それは可能ですか?

4

4 に答える 4

15

@Cyclone のリクエストに応えて、可能な解決策として次のことを提案します。

import signal

signal.signal(signal.SIGINT, signal.SIG_DFL);
# any pyzmq-related code, such as `reply = socket.recv()`
于 2014-10-15T21:53:57.893 に答える
2

これが Windows で機能するかどうかはわかりませんが、Linux では次のようにしました。

if signal.signal(signal.SIGINT, signal.SIG_DFL):
    sys.exit()
于 2013-06-18T17:56:06.550 に答える
1

このスレッドの下部近くで提案されている ctrl+break を試してください (Page Up の上のキーのように、調べる必要がありました。そのキーに触れたことはないと思います) 。私はあまり派手なことはしていませんが、私が試したケースではこれで十分うまくいくようです。

于 2014-03-22T07:56:55.007 に答える