是否有可能在主机端检测virtio串行设备是否在guest虚拟机中打开?

我正在尝试使用virtio-serial在QEMU guest和host之间build立通信。
我使用以下命令运行VM:

qemu-system-x86_64 \ -m 2048 -hda ubuntu_image \ -device virtio-serial \ -chardev socket,path=/tmp/foo,server,nowait,id=foo \ -device virtserialport,chardev=foo,name=org.ubuntu.foo \ 

在客人我运行用C写的简单的程序打开并写入一些数据到virtio端口设备:

 /dev/virtio-ports/org.ubuntu.foo 

在主机端我使用一些简单的程序,也用C写的打开并从套接字读取数据:

 /tmp/foo 

当客人closures设备时,我需要在程序中检测到,但是这是一个问题,因为我无法检测到virtio端口设备是否在guest虚拟机中被打开或closures,而在guest虚拟机中,我可以检测到主机端是否连接read()的返回值,0表示主机端未连接。
read()在主机端的行为是:
如果套接字以非阻塞模式打开,则返回-1,而errno被设置为EAGAIN,否则在两种情况下都阻塞 – 当客户打开设备时。
我一直在寻找可能的方法来检查virtio端口设备是否在guest虚拟机中打开或closures,但目前还没有结果。

是否有可能改变chardev的行为,以便在客人打开/closuresvirtio端口设备时通知主机?