Daniel P. Berrange wrote: > On Wed, Apr 30, 2008 at 11:38:01PM -0700, Dave Leskovec wrote: >> This patch allows the lxc driver to handle SIGCHLD signals from exiting >> containers. The handling will perform some cleanup such as waiting for >> the container process and killing/waiting the tty process. This is also >> required as a first step towards providing some kind of client container exit >> notification. Additional support is needed for that but this SIGCHLD handling >> is what would trigger the notification. >> >> libvirtd was already catching SIGCHLD although it was just ignoring it. I >> implemented a mechanism to distribute the signal to any other drivers in the >> daemon that registered a function to handle them. This required some changes to >> the way libvirtd was catching signals (to get the pid of the sending process) as >> well as an addition to the state driver structure. The intent was to provide >> future drivers access to signals as well. > > The reason it was ignoring it was because the QEMU driver detects the > shutdown of the VM without using the SIGCHLD directly. It instead detects > EOF on the STDOUT/ERR of the VM child process & calls waitpid() then to > cleanup. I notice that the LXC driver does not appear to setup any > STDERR/OUT for its VMs so they're still inheriting the daemon's. If it > isn't a huge problem it'd be desirable to try & have QEMU & LXC operate > in the same general way wrt to their primary child procs for VMs. > > Regards, > Daniel. stdout/err for the container is set to the tty. Containers can be used in a non-VM fashion as well. Think of a container running a daemon process or a container running a job as a part of a job scheduler/distribution system. Wouldn't it be valid in these cases for the container close stdout/err while continuing to run? -- Best Regards, Dave Leskovec IBM Linux Technology Center Open Virtualization -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list