No subject
Sun Aug 31 18:50:12 WST 2008
and then, Done is put on the end of the last line, and a newline is
added. But a new IO_IN event is triggered just as the line starts to
arrive, and readline() has to wait for the newline to arrive, while
the application is locked.
Any ideas? Thanks!!
2008/10/28 Roberto Cavada <cavada at fbk.eu>:
> N=E9stor Amigo Cairo wrote:
>
>> Ok! I have tested this, and it only works at the end of the execution
>> of the command,
>
> There is a problem in the way you create your watcher's callback. You hav=
e
> to use a function, a method or a lambda. Try with this version of
> 'do_format'. It will also handle pipe error conditions.
> #-------------------------------------------
> def do_format(self, widget, textbuffer):
>
> def watcher(source, condition, buf):
> if condition =3D=3D gobject.IO_IN:
> buf.insert(buf.get_end_iter(), source.readline())
> return True # keep it watching
> # error condition
> buf.insert(buf.get_end_iter(), "<process died>\n")
> return False # stop watching
>
> proc =3D subprocess.Popen(("./prueba.sh"),
> shell=3DFalse,
> stdout=3Dsubprocess.PIPE,
> )
> gobject.io_add_watch(proc.stdout,
> gobject.IO_IN | gobject.IO_ERR | gobject.IO_HUP,
> watcher, textbuffer)
> return
> #-------------------------------------------
>
> Hope that helps.
> r.
>
>
>
--=20
N=E9stor
+34 687 96 74 81
nestorac at gmail.com
------=_Part_30459_7863056.1225272446188
Content-Type: text/x-python; name=flashcopy.py
Content-Transfer-Encoding: base64
X-Attachment-Id: f_fmvrjhmv0
Content-Disposition: attachment; filename=flashcopy.py
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCgojIGZsYXNoY29weQoKaW1wb3J0IHB5Z3RrCnB5Z3RrLnJl
cXVpcmUoJzIuMCcpCmltcG9ydCBndGsKaW1wb3J0IHRocmVhZGluZwppbXBvcnQgdGltZQppbXBv
cnQgc3VicHJvY2VzcwppbXBvcnQgZ29iamVjdAoKCmd0ay5nZGsudGhyZWFkc19pbml0KCkKZ29i
amVjdC50aHJlYWRzX2luaXQoKQoKCmNsYXNzIEZvcm1hdFRocmVhZCh0aHJlYWRpbmcuVGhyZWFk
KToKCiAgc3RvcHRocmVhZCA9IHRocmVhZGluZy5FdmVudCgpCgogIGRlZiBpbml0KHNlbGYsIHRl
eHRidWZmZXIpOgogICAgc2VsZi50ZXh0YnVmZmVyID0gdGV4dGJ1ZmZlcgoKICAjZGVmIHNldChz
ZWxmLCBzb3VyY2UsIGNvbmRpdGlvbik6CiAgZGVmIHNldChzZWxmLCBzb3VyY2UpOgogICAgZ3Rr
Lmdkay50aHJlYWRzX2VudGVyKCkKICAgICNzZWxmLnRleHRidWZmZXIuaW5zZXJ0KHNlbGYudGV4
dGJ1ZmZlci5nZXRfZW5kX2l0ZXIoKSwgc291cmNlLnJlYWRsaW5lKCkpCiAgICBzZWxmLnRleHRi
dWZmZXIuaW5zZXJ0KHNlbGYudGV4dGJ1ZmZlci5nZXRfZW5kX2l0ZXIoKSwgc291cmNlKQogICAg
Z3RrLmdkay50aHJlYWRzX2xlYXZlKCkKICAgIHJldHVybiBUcnVlCgogIGRlZiBydW4oc2VsZik6
CiAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbigoIi9zYmluL2JhZGJsb2NrcyIsICItdnciLCAi
L2Rldi9jYXJkY2YiKSwKICAgICNwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbigoIi4vcHJ1ZWJhLnNo
IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbD1GYWxzZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICkKICAgIHdoaWxlIFRydWU6CiAgICAgIGxpbmUgPSBwcm9jLnN0ZGVyci5yZWFkbGluZSgp
CiAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgIHByaW50ICJJbnB1dCBpcyBlbmRlZC4iCiAgICAg
ICAgYnJlYWsKICAgICAgc2VsZi5zZXQobGluZSkKICAgICNnb2JqZWN0LmlvX2FkZF93YXRjaChw
cm9jLnN0ZG91dCwgZ29iamVjdC5JT19JTiwgc2VsZi5zZXQpCiAgICAjZ29iamVjdC5pb19hZGRf
d2F0Y2gocHJvYy5zdGRlcnIsIGdvYmplY3QuSU9fSU4sIHNlbGYuc2V0KQogICAgCiAgCiAgZGVm
IHN0b3Aoc2VsZik6CiAgICAjU3RvcCBtZXRob2QsIHNldHMgdGhlIGV2ZW50IHRvIHRlcm1pbmF0
ZSB0aGUgdGhyZWFkJ3MgbWFpbiBsb29wCiAgICBzZWxmLnN0b3B0aHJlYWQuc2V0KCkKICAgICAg
ICAgCgoKY2xhc3MgQ29weVRocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKCiAgc3RvcHRocmVhZCA9
IHRocmVhZGluZy5FdmVudCgpCgogIGRlZiBpbml0KHNlbGYsIHRleHRidWZmZXIpOgogICAgc2Vs
Zi50ZXh0YnVmZmVyID0gdGV4dGJ1ZmZlcgoKICAjZGVmIHNldChzZWxmLCBzb3VyY2UsIGNvbmRp
dGlvbik6CiAgZGVmIHNldChzZWxmLCBzb3VyY2UpOgogICAgZ3RrLmdkay50aHJlYWRzX2VudGVy
KCkKICAgICNzZWxmLnRleHRidWZmZXIuaW5zZXJ0KHNlbGYudGV4dGJ1ZmZlci5nZXRfZW5kX2l0
ZXIoKSwgc291cmNlLnJlYWRsaW5lKCkpCiAgICBzZWxmLnRleHRidWZmZXIuaW5zZXJ0KHNlbGYu
dGV4dGJ1ZmZlci5nZXRfZW5kX2l0ZXIoKSwgc291cmNlKQogICAgZ3RrLmdkay50aHJlYWRzX2xl
YXZlKCkKICAgIHJldHVybiBUcnVlCgogIGRlZiBydW4oc2VsZik6CiAgICBwcm9jID0gc3VicHJv
Y2Vzcy5Qb3BlbigoImRkIiwgImlmPS90YXJnZXQvc3lzX3I0NS5pbWciLCAib2Y9L2Rldi9jYXJk
Y2YiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsPUZhbHNlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKSAKICAgIGd0ay5nZGsudGhyZWFkc19lbnRlcigpCiAgICBzZWxmLnRleHRidWZmZXIu
aW5zZXJ0KHNlbGYudGV4dGJ1ZmZlci5nZXRfZW5kX2l0ZXIoKSwgIkNvcHlpbmcuLi4iKQogICAg
Z3RrLmdkay50aHJlYWRzX2xlYXZlKCkKICAgIHdoaWxlIFRydWU6CiAgICAgIGxpbmUgPSBwcm9j
LnN0ZG91dC5yZWFkbGluZSgpCiAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgIHByaW50ICJJbnB1
dCBpcyBlbmRlZC4iCiAgICAgICAgYnJlYWsKICAgICAgc2VsZi5zZXQobGluZSkKICAgICNnb2Jq
ZWN0LmlvX2FkZF93YXRjaChwcm9jLnN0ZG91dCwgZ29iamVjdC5JT19JTiwgc2VsZi5zZXQpCiAg
ICAjZ29iamVjdC5pb19hZGRfd2F0Y2gocHJvYy5zdGRlcnIsIGdvYmplY3QuSU9fSU4sIHNlbGYu
c2V0KQogICAgCiAgCiAgZGVmIHN0b3Aoc2VsZik6CiAgICAjU3RvcCBtZXRob2QsIHNldHMgdGhl
IGV2ZW50IHRvIHRlcm1pbmF0ZSB0aGUgdGhyZWFkJ3MgbWFpbiBsb29wCiAgICBzZWxmLnN0b3B0
aHJlYWQuc2V0KCkKICAgICAgICAgCgpjbGFzcyBUZXh0Vmlld0V4YW1wbGU6CiAgCiAgZGVmIGRv
X2NvcHkoc2VsZiwgd2lkZ2V0LCB0ZXh0YnVmZmVyKToKICAgIGNvcHkgPSBDb3B5VGhyZWFkKCkK
ICAgIGNvcHkuaW5pdCh0ZXh0YnVmZmVyKQogICAgY29weS5zdGFydCgpCiAgCiAgZGVmIGRvX2Zv
cm1hdChzZWxmLCB3aWRnZXQsIHRleHRidWZmZXIpOgogICAgIiIiCiAgICBiYWNrZ3JvdW5kID0g
Rm9ybWF0VGhyZWFkKCkKICAgIGJhY2tncm91bmQuaW5pdCh0ZXh0YnVmZmVyKQogICAgYmFja2dy
b3VuZC5zdGFydCgpCiAgICAiIiIKICAgIAogICAgZGVmIHdhdGNoZXIoc291cmNlLCBjb25kaXRp
b24sIGJ1Zik6CiAgICAgIGlmIGNvbmRpdGlvbiA9PSBnb2JqZWN0LklPX0lOOgogICAgICAgIG1l
c3NhZ2UgPSBzb3VyY2UucmVhZGxpbmUoKQogICAgICAgIGJ1Zi5pbnNlcnQoYnVmLmdldF9lbmRf
aXRlcigpLCBtZXNzYWdlKQogICAgICAgIHJldHVybiBUcnVlICMga2VlcCBpdCB3YXRjaGluZwog
ICAgIyBlcnJvciBjb25kaXRpb24KICAgICAgYnVmLmluc2VydChidWYuZ2V0X2VuZF9pdGVyKCks
ICI8cHJvY2VzcyBkaWVkPlxuIikKICAgICAgcmV0dXJuIEZhbHNlICMgc3RvcCB3YXRjaGluZwoK
ICAgIGRlZiB3YXRjaGVyX2Vycihzb3VyY2UsIGNvbmRpdGlvbiwgYnVmKToKICAgICAgaWYgY29u
ZGl0aW9uID09IGdvYmplY3QuSU9fSU46CiAgICAgICAgbWVzc2FnZSA9IHNvdXJjZS5yZWFkbGlu
ZSgpCiAgICAgICAgYnVmLmluc2VydChidWYuZ2V0X2VuZF9pdGVyKCksIG1lc3NhZ2UpCiAgICAg
ICAgcmV0dXJuIFRydWUgIyBrZWVwIGl0IHdhdGNoaW5nCiAgICAjIGVycm9yIGNvbmRpdGlvbgog
ICAgICBidWYuaW5zZXJ0KGJ1Zi5nZXRfZW5kX2l0ZXIoKSwgIjxwcm9jZXNzIGRpZWQ+XG4iKQog
ICAgICByZXR1cm4gRmFsc2UgIyBzdG9wIHdhdGNoaW5nCiAgICAgIAogICAgcHJvYyA9IHN1YnBy
b2Nlc3MuUG9wZW4oKCIuL3BydWViYS5zaCIpLAogICAgI3Byb2MgPSBzdWJwcm9jZXNzLlBvcGVu
KCgiL3NiaW4vYmFkYmxvY2tzIiwgIi12dyIsICIvZGV2L2NhcmRjZiIpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaGVsbD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
b3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1
YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICBnb2JqZWN0Lmlv
X2FkZF93YXRjaChwcm9jLnN0ZG91dCwKICAgICAgICAgICAgICAgICAgICAgICAgZ29iamVjdC5J
T19JTiB8IGdvYmplY3QuSU9fRVJSIHwgZ29iamVjdC5JT19IVVAsCiAgICAgICAgICAgICAgICAg
ICAgICAgIHdhdGNoZXIsIHRleHRidWZmZXIpCiAgICAKICAgIGdvYmplY3QuaW9fYWRkX3dhdGNo
KHByb2Muc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICBnb2JqZWN0LklPX0lOIHwgZ29i
amVjdC5JT19FUlIgfCBnb2JqZWN0LklPX0hVUCwKICAgICAgICAgICAgICAgICAgICAgICAgd2F0
Y2hlcl9lcnIsIHRleHRidWZmZXIpCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgIiIibWQ1
c3VtX3N0YXR1cywgbWQ1c3VtX291dHB1dCA9IGNvbW1hbmRzLmdldHN0YXR1c291dHB1dCgnbWQ1
c3VtIC1jIE1ENVNVTVMnKQogICAgdGV4dGJ1ZmZlci5pbnNlcnQodGV4dGJ1ZmZlci5nZXRfZW5k
X2l0ZXIoKSwgc3RyKG1kNXN1bV9zdGF0dXMpKSIiIgogICAgCiAgZGVmIGNsb3NlX2FwcGxpY2F0
aW9uKHNlbGYsIHdpZGdldCk6CiAgICAiIiJtYWluX3F1aXQgZnVuY3Rpb24sIGl0IHN0b3BzIHRo
ZSB0aHJlYWQgYW5kIHRoZSBndGsncyBtYWluIGxvb3AiIiIKICAgICNJbXBvcnRpbmcgdGhlIGZz
IG9iamVjdCBmcm9tIHRoZSBnbG9iYWwgc2NvcGUKICAgICNzZWxmLmJhY2tncm91bmQuc3RvcCgp
CiAgICBndGsubWFpbl9xdWl0KCkKCiAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgd2luZG93ID0g
Z3RrLldpbmRvdyhndGsuV0lORE9XX1RPUExFVkVMKQogICAgd2luZG93LnNldF9yZXNpemFibGUo
VHJ1ZSkgIAogICAgd2luZG93LmNvbm5lY3QoImRlc3Ryb3kiLCBzZWxmLmNsb3NlX2FwcGxpY2F0
aW9uKQogICAgd2luZG93LnNldF90aXRsZSgiVGV4dFZpZXcgV2lkZ2V0IEJhc2ljIEV4YW1wbGUi
KQogICAgd2luZG93LnNldF9ib3JkZXJfd2lkdGgoMCkKCiAgICBib3gxID0gZ3RrLlZCb3goRmFs
c2UsIDApCiAgICB3aW5kb3cuYWRkKGJveDEpCiAgICBib3gxLnNob3coKQoKICAgIGJveDIgPSBn
dGsuVkJveChGYWxzZSwgMTApCiAgICBib3gyLnNldF9ib3JkZXJfd2lkdGgoMTApCiAgICBib3gx
LnBhY2tfc3RhcnQoYm94MiwgVHJ1ZSwgVHJ1ZSwgMCkKICAgIGJveDIuc2hvdygpCgogICAgc3cg
PSBndGsuU2Nyb2xsZWRXaW5kb3coKQogICAgc3cuc2V0X3BvbGljeShndGsuUE9MSUNZX0FVVE9N
QVRJQywgZ3RrLlBPTElDWV9BVVRPTUFUSUMpCiAgICB0ZXh0dmlldyA9IGd0ay5UZXh0Vmlldygp
CiAgICB0ZXh0YnVmZmVyID0gdGV4dHZpZXcuZ2V0X2J1ZmZlcigpCiAgICBzdy5hZGQodGV4dHZp
ZXcpCiAgICBzdy5zaG93KCkKICAgIHRleHR2aWV3LnNldF9lZGl0YWJsZSgwKQogICAgdGV4dHZp
ZXcuc2V0X2N1cnNvcl92aXNpYmxlKDApCiAgICB0ZXh0dmlldy5zaG93KCkKCiAgICBib3gyLnBh
Y2tfc3RhcnQoc3cpCgogICAgaGJveCA9IGd0ay5IQnV0dG9uQm94KCkKICAgIGJveDIucGFja19z
dGFydChoYm94LCBGYWxzZSwgRmFsc2UsIDApCiAgICBoYm94LnNob3coKQoKICAgIHZib3ggPSBn
dGsuVkJveCgpCiAgICB2Ym94LnNob3coKQogICAgaGJveC5wYWNrX3N0YXJ0KHZib3gsIEZhbHNl
LCBGYWxzZSwgMCkKICAgICMgY2hlY2sgYnV0dG9uIHRvIHRvZ2dsZSBlZGl0YWJsZSBtb2RlCiAg
ICBjb3B5QnV0dG9uID0gZ3RrLkJ1dHRvbigiQ29weSIpCiAgICB2Ym94LnBhY2tfc3RhcnQoY29w
eUJ1dHRvbiwgRmFsc2UsIEZhbHNlLCAwKQogICAgY29weUJ1dHRvbi5jb25uZWN0KCJjbGlja2Vk
Iiwgc2VsZi5kb19jb3B5LCB0ZXh0YnVmZmVyKQogICAgY29weUJ1dHRvbi5zaG93KCkKICAgICMg
cmFkaW8gYnV0dG9ucyB0byBzcGVjaWZ5IHdyYXAgbW9kZQogICAgdmJveCA9IGd0ay5WQm94KCkK
ICAgIHZib3guc2hvdygpCiAgICBoYm94LnBhY2tfc3RhcnQodmJveCwgRmFsc2UsIEZhbHNlLCAw
KQogICAgCiAgICAKICAgIAogICAgIyBjaGVjayBidXR0b24gdG8gdG9nZ2xlIGVkaXRhYmxlIG1v
ZGUKICAgIGZvcm1hdEJ1dHRvbiA9IGd0ay5CdXR0b24oIkZvcm1hdCIpCiAgICB2Ym94LnBhY2tf
c3RhcnQoZm9ybWF0QnV0dG9uLCBGYWxzZSwgRmFsc2UsIDApCiAgICBmb3JtYXRCdXR0b24uY29u
bmVjdCgiY2xpY2tlZCIsIHNlbGYuZG9fZm9ybWF0LCB0ZXh0YnVmZmVyKQogICAgZm9ybWF0QnV0
dG9uLnNob3coKQogICAgIyByYWRpbyBidXR0b25zIHRvIHNwZWNpZnkgd3JhcCBtb2RlCiAgICB2
Ym94ID0gZ3RrLlZCb3goKQogICAgdmJveC5zaG93KCkKICAgIGhib3gucGFja19zdGFydCh2Ym94
LCBGYWxzZSwgRmFsc2UsIDApCiAgICAKICAgIG9wdGlvbnNCdXR0b24gPSBndGsuQnV0dG9uKCJP
cHRpb25zIikKICAgIHZib3gucGFja19zdGFydChvcHRpb25zQnV0dG9uLCBGYWxzZSwgVHJ1ZSwg
MCkKICAgICNyYWRpby5jb25uZWN0KCJ0b2dnbGVkIiwgc2VsZi5uZXdfd3JhcF9tb2RlLCB0ZXh0
dmlldywgZ3RrLldSQVBfTk9ORSkKICAgIG9wdGlvbnNCdXR0b24uc2hvdygpCiAgICAgICAgCiAg
ICAjIHJhZGlvIGJ1dHRvbnMgdG8gc3BlY2lmeSBqdXN0aWZpY2F0aW9uCiAgICB2Ym94ID0gZ3Rr
LlZCb3goKQogICAgdmJveC5zaG93KCkKICAgIGhib3gucGFja19zdGFydCh2Ym94LCBGYWxzZSwg
RmFsc2UsIDApCiAgICB1cGdyYWRlQnV0dG9uID0gZ3RrLkJ1dHRvbigiVXBncmFkZSIpCiAgICB2
Ym94LnBhY2tfc3RhcnQodXBncmFkZUJ1dHRvbiwgRmFsc2UsIFRydWUsIDApCiAgICAjcmFkaW8u
Y29ubmVjdCgidG9nZ2xlZCIsIHNlbGYubmV3X2p1c3RpZmljYXRpb24sIHRleHR2aWV3LAogICAg
IyAgICAgICAgICAgICAgZ3RrLkpVU1RJRllfTEVGVCkKICAgIHVwZ3JhZGVCdXR0b24uc2hvdygp
CgogICAgc2VwYXJhdG9yID0gZ3RrLkhTZXBhcmF0b3IoKQogICAgYm94MS5wYWNrX3N0YXJ0KHNl
cGFyYXRvciwgRmFsc2UsIFRydWUsIDApCiAgICBzZXBhcmF0b3Iuc2hvdygpCgogICAgYm94MiA9
IGd0ay5WQm94KEZhbHNlLCAxMCkKICAgIGJveDIuc2V0X2JvcmRlcl93aWR0aCgxMCkKICAgIGJv
eDEucGFja19zdGFydChib3gyLCBGYWxzZSwgVHJ1ZSwgMCkKICAgIGJveDIuc2hvdygpCgogICAg
YnV0dG9uID0gZ3RrLkJ1dHRvbigiY2xvc2UiKQogICAgYnV0dG9uLmNvbm5lY3QoImNsaWNrZWQi
LCBzZWxmLmNsb3NlX2FwcGxpY2F0aW9uKQogICAgYm94Mi5wYWNrX3N0YXJ0KGJ1dHRvbiwgVHJ1
ZSwgVHJ1ZSwgMCkKICAgIGJ1dHRvbi5zZXRfZmxhZ3MoZ3RrLkNBTl9ERUZBVUxUKQogICAgYnV0
dG9uLmdyYWJfZGVmYXVsdCgpCiAgICBidXR0b24uc2hvdygpCiAgICB3aW5kb3cuc2hvdygpCiAg
ICAKCmRlZiBtYWluKCk6CiAgZ3RrLm1haW4oKQogIHJldHVybiAwICAgICAgIAoKaWYgX19uYW1l
X18gPT0gIl9fbWFpbl9fIjoKICBUZXh0Vmlld0V4YW1wbGUoKQogIG1haW4oKQo=
------=_Part_30459_7863056.1225272446188
Content-Type: application/x-sh; name=prueba.sh
Content-Transfer-Encoding: base64
X-Attachment-Id: f_fmvrjola1
Content-Disposition: attachment; filename=prueba.sh
IyEvYmluL2Jhc2gKCmZvciAoKCBpPTE7IGk8PTEwOyBpKysgKSkKZG8KICBlY2hvIC1uICJTdGVw
ICIKICBzbGVlcCA1CiAgZWNobwogIHNsZWVwIDAuNQpkb25lCg==
------=_Part_30459_7863056.1225272446188--
More information about the pygtk
mailing list