Date: Wed, 3 Jun 2009 15:15:32 +0300 From: Vlad Galu <dudu@dudu.ro> To: freebsd-stable@freebsd.org Subject: poll()-ing a pipe descriptor, watching for POLLHUP Message-ID: <ad79ad6b0906030515k2e41f4b9t25f752af8ef3866c@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
--001636c5ab5bfe60d8046b709e6b Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hello, Please take a look at the attached code. Shouldn't poll() get a POLLHUP event when the child process exits, closing the write end of the pipe? Thanks, Vlad --001636c5ab5bfe60d8046b709e6b Content-Type: application/octet-stream; name="poll.cpp" Content-Disposition: attachment; filename="poll.cpp" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fvi00x8j0 I2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL3dhaXQuaD4KI2luY2x1ZGUgPHBv bGwuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgoKI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8 bWFwPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oaW50 IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewoJbWFwPHBpZF90LCBpbnQ+IGNoaWxkcmVuOwoKCWZvciAo aW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CgkJaW50IHBpcGVwYWlyWzJdOwoJCWlmICghcGlwZShw aXBlcGFpcikpIHsKCQkJcGlkX3QgcGlkID0gZm9yaygpOwoJCQlpZiAocGlkID4gMCkgewkvLyBw YXJlbnQKCQkJCWNoaWxkcmVuW3BpZF0gPSBwaXBlcGFpclswXTsKCQkJCWNvdXQgPDwgIkNoaWxk IHByb2Nlc3MgIiA8PCBwaWQgPDwgIiBzcGF3bmVkIiA8PCBlbmRsOwoJCQl9IGVsc2UgaWYgKHBp ZCA9PSAwKSB7IC8vIGNoaWxkCgkJCQkvLyBzbGVlcCBmb3IgYSB3aGlsZQoJCQkJc2xlZXAoNSk7 CgkJCQkvLyBncmFjZWZ1bGx5IGV4aXQKCQkJCWV4aXQoMCk7CgkJCX0KCQl9IGVsc2UKCQkJY2Vy ciA8PCAiQ291bGRuJ3QgY3JlYXRlIHRoZSBwaXBlcyEiIDw8IGVuZGw7Cgl9CgoJLy8gY2hlY2sg dGhlIGNoaWxkcmVuCgl3aGlsZSAoIWNoaWxkcmVuLmVtcHR5KCkpIHsKCQlmb3IgKG1hcDxwaWRf dCwgaW50Pjo6aXRlcmF0b3IgaXQgPSBjaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBjaGlsZHJlbi5l bmQoKTsgaXQrKykgewoJCQkvLyBwb2xsIGVhY2ggY2hpbGQncyBwaXBlIHRvIGNoZWNrIGZvciBk YXRhCgkJCXN0cnVjdCBwb2xsZmQgcGZkID0geyBpdC0+c2Vjb25kLCBQT0xMSU4sIDAgfTsKCQkJ aW50IHBvbGxyZXQgPSBwb2xsKCZwZmQsIDEsIDEwMDApOwoJCQljb3V0IDw8ICJwb2xscmV0OiAi IDw8IHBvbGxyZXQgPDwgZW5kbDsKCQkJaWYgKHBvbGxyZXQgPiAwKSB7CgkJCQlpZiAoKHBmZC5y ZXZlbnRzICYgUE9MTElOKSAmJiAocGZkLnJldmVudHMgJiBQT0xMSFVQKSkKCQkJCQljb3V0IDw8 ICJDaGlsZCAiIDw8IGl0LT5maXJzdCA8PCAiIGV4aXRlZCEiIDw8IGVuZGw7CgoJCQkJaWYgKHBm ZC5yZXZlbnRzICYgUE9MTElOKSB7CgkJCQkJdmVjdG9yPGNoYXI+IHRtcGJ1Zig0KTsKCQkJCQlp bnQgcmVhZHJldCA9IHJlYWQoaXQtPnNlY29uZCwgJnRtcGJ1ZlswXSwgNCk7CgoJCQkJCWlmIChy ZWFkcmV0ID4gMCkKCQkJCQkJY291dCA8PCAiQ2hpbGQgIiA8PCBpdC0+Zmlyc3QgPDwgIiBzYWlk OiAiIDw8IHN0cmluZyh0bXBidWYuYmVnaW4oKSwgdG1wYnVmLmVuZCgpKSA8PCBlbmRsOwoJCQkJ CWVsc2UgaWYgKHJlYWRyZXQgPT0gMCkKCQkJCQkJY291dCA8PCAiRU9GIGZyb20gY2hpbGQgIiA8 PCBpdC0+Zmlyc3QgPDwgIiwgbXVzdCd2ZSBleGl0ZWQiIDw8IGVuZGw7CgkJCQkJZWxzZSBpZiAo cmVhZHJldCA8IDApCgkJCQkJCWNvdXQgPDwgIlJlYWQgZXJyb3IiIDw8IGVuZGw7CgkJCQl9CgkJ CX0KCgkJCWludCBzdGF0dXMgPSAwOwoJCQlpZiAod2FpdHBpZChpdC0+Zmlyc3QsICZzdGF0dXMs IFdOT0hBTkcpKSB7CgkJCQlpZiAoV0lGRVhJVEVEKHN0YXR1cykpIHsKCQkJCQljb3V0IDw8ICJD aGlsZCAiIDw8IGl0LT5maXJzdCA8PCAiIHN0b3BwZWQiIDw8IGVuZGw7Ci8vCQkJCQljaGlsZHJl bi5lcmFzZShpdCsrKTsKCQkJCX0KCQkJfSBlbHNlIHsKLy8JCQkJKytpdDsKCQkJfQoJCQlzbGVl cCgxKTsKCQl9Cgl9Cn0KCi8vIHZpOnRzPTQKCg== --001636c5ab5bfe60d8046b709e6b--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ad79ad6b0906030515k2e41f4b9t25f752af8ef3866c>