Skip site navigation (1)Skip section navigation (2)
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>