Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Broken pipe
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
glockenstein
n00b
n00b


Joined: 26 Mar 2007
Posts: 10

PostPosted: Mon Mar 26, 2007 6:05 pm    Post subject: Broken pipe Reply with quote

Hallo Forum!

Wenn ich den Befehl
# equery list | head -n 5
eingebe, bekomme ich folgendes Ergebnis:
* installed packages
app-admin/eselect-1.0.7
app-admin/eselect-oodict-20060706
app-admin/eselect-opengl-1.0.5
app-admin/eselect-vi-1.1.4
Traceback (most recent call last):
File "/usr/bin/equery", line 1733, in ?
cmd.perform(local_opts)
File "/usr/bin/equery", line 1361, in perform
self._print_installed(matches, rx)
File "/usr/bin/equery", line 1417, in _print_installed
matches, rx, 1)
File "/usr/bin/equery", line 1397, in _generic_print
print_info(0, pkg.get_cpv())
File "/usr/lib/gentoolkit/pym/gentoolkit/pprinter.py", line 20, in print_info
sys.stdout.write(s)
IOError: [Errno 32] Broken pipe

Ist diese Fehlermeldung vermeidbar? Optionen -q und -C helfen leider nicht.
Interessanterweise geht es mit
# equery list 2>&1 | head -n 5
aber das kann ja nicht die Lösung sein ...

Gruß Micha
Back to top
View user's profile Send private message
tacki
Guru
Guru


Joined: 29 Jun 2002
Posts: 418
Location: Germany

PostPosted: Tue Mar 27, 2007 8:02 am    Post subject: Reply with quote

Der Grund ist ganz einfach:

equery will etwas ausgeben, und es gibt keinen 'reader' mehr im pipe, da head nach 5 zeilen dicht macht. das ergebnis ist ein SIGPIPE-Error, der equery zum absturz bringt.

siehe auch hier:

http://www.unixguide.net/unix/bash/E2.shtml

Eventuell gibts aber eine andere Lösung für dein ursprüngliches Problem? Was willst du denn genau erreichen?
_________________
"Kazaa ist der beste MP3-Player den es gibt!"
.o( ... )
Back to top
View user's profile Send private message
glockenstein
n00b
n00b


Joined: 26 Mar 2007
Posts: 10

PostPosted: Tue Mar 27, 2007 8:26 am    Post subject: Reply with quote

tacki wrote:
Der Grund ist ganz einfach:

equery will etwas ausgeben, und es gibt keinen 'reader' mehr im pipe, da head nach 5 zeilen dicht macht. das ergebnis ist ein SIGPIPE-Error, der equery zum absturz bringt.
..
Eventuell gibts aber eine andere Lösung für dein ursprüngliches Problem? Was willst du denn genau erreichen?


Nun ja, es gibt kein ursprüngliches Problem. Mir ist bei irgendeinem Kommando aufgefallen, daß tail eine
Zeile weniger liefert als gewünscht. Habe vergessen was das war. Habe dann mit head und tail getestet,
was es gewesen sein könnte und bin dabei auf diese Merkwürdigkeit gestoßen.
Ich dachte, es könnte ein Fehler in equery sein. Habe nur ich diesen Absturz?
Gruß Micha
Back to top
View user's profile Send private message
tacki
Guru
Guru


Joined: 29 Jun 2002
Posts: 418
Location: Germany

PostPosted: Tue Mar 27, 2007 8:49 am    Post subject: Reply with quote

Nein, das ist ein logischer Error in /bin/bash. Wird bei jedem auftreten, der die standard-bash verwendet... ka wie es bei den Alternativen wie zsh etc. aussieht.
_________________
"Kazaa ist der beste MP3-Player den es gibt!"
.o( ... )
Back to top
View user's profile Send private message
hurra
Apprentice
Apprentice


Joined: 11 Apr 2004
Posts: 224

PostPosted: Tue Mar 27, 2007 12:12 pm    Post subject: Reply with quote

tacki wrote:
Nein, das ist ein logischer Error in /bin/bash. Wird bei jedem auftreten, der die standard-bash verwendet... ka wie es bei den Alternativen wie zsh etc. aussieht.

zsh bringt den gleichen Fehler :)
Back to top
View user's profile Send private message
glockenstein
n00b
n00b


Joined: 26 Mar 2007
Posts: 10

PostPosted: Tue Mar 27, 2007 12:28 pm    Post subject: Reply with quote

tacki wrote:
Nein, das ist ein logischer Error in /bin/bash. Wird bei jedem auftreten, der die standard-bash verwendet... ka wie es bei den Alternativen wie zsh etc. aussieht.


Gefunden auf www.gnu.org:
As of bash-3.1, bash does not report SIGPIPE errors by default. You
can build a version of bash that will report such errors.

Installiert habe ich aber doch 3.1_p17. Eventuell ist da etwas mit dem Gentoo-Patch
bash-3.0-trap-fg-signals.patch nicht okay?

Gruß Micha
Back to top
View user's profile Send private message
Mr. Anderson
l33t
l33t


Joined: 22 Apr 2004
Posts: 762

PostPosted: Wed Mar 28, 2007 1:01 am    Post subject: Reply with quote

Du kannst es umgehen mit sed (oder natürlich auch anderen Editoren)

Code:
equery list | sed -e'1,5!d'
Back to top
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6749

PostPosted: Wed Mar 28, 2007 1:36 am    Post subject: Reply with quote

glockenstein wrote:
As of bash-3.1, bash does not report SIGPIPE errors by default.
Eventuell ist da etwas mit dem Gentoo-Patch [...] nicht okay?

Ist doch alles in Ordnung: Die Bash meldet den Fehler ja auch nicht, das macht Python. Mit
Code:
eix -c | head -n 5
sieht man keine solche Meldung.
Back to top
View user's profile Send private message
glockenstein
n00b
n00b


Joined: 26 Mar 2007
Posts: 10

PostPosted: Wed Mar 28, 2007 8:20 am    Post subject: Reply with quote

mv wrote:
glockenstein wrote:
As of bash-3.1, bash does not report SIGPIPE errors by default.
Eventuell ist da etwas mit dem Gentoo-Patch [...] nicht okay?

Ist doch alles in Ordnung: Die Bash meldet den Fehler ja auch nicht, das macht Python. Mit
Code:
eix -c | head -n 5
sieht man keine solche Meldung.


Es ging um equery. Aber interessant: Habe jetzt einfach mal equery list -c eingetippt.
Dann geht es. Diese lokale Option wird bei equery list --help gar nicht angezeigt.
Was bewirkt diese Option und warum ist sie nicht dokumentiert?

Trotzdem bleibt die Frage, weshalb bash einen SIGPIPE error meldet, obwohl es das nicht sollte
laut Dokumentation. Und das finde ich nicht in Ordnung ;-)

Gruß Micha
Back to top
View user's profile Send private message
glockenstein
n00b
n00b


Joined: 26 Mar 2007
Posts: 10

PostPosted: Wed Mar 28, 2007 8:28 am    Post subject: Reply with quote

glockenstein wrote:

Es ging um equery. Aber interessant: Habe jetzt einfach mal equery list -c eingetippt.
Dann geht es. Diese lokale Option wird bei equery list --help gar nicht angezeigt.
Was bewirkt diese Option und warum ist sie nicht dokumentiert?
Gruß Micha


Unsinn ich schrieb. Er suchte nach "-c" und fand weniger als 5 Zeilen.
Klar das es dann geht ...
Back to top
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6749

PostPosted: Wed Mar 28, 2007 12:10 pm    Post subject: Reply with quote

glockenstein wrote:
mv wrote:
Die Bash meldet den Fehler ja auch nicht, das macht Python.

Trotzdem bleibt die Frage, weshalb bash einen SIGPIPE error meldet

:?:
Back to top
View user's profile Send private message
glockenstein
n00b
n00b


Joined: 26 Mar 2007
Posts: 10

PostPosted: Wed Mar 28, 2007 12:36 pm    Post subject: Reply with quote

mv wrote:
glockenstein wrote:
mv wrote:
Die Bash meldet den Fehler ja auch nicht, das macht Python.

Trotzdem bleibt die Frage, weshalb bash einen SIGPIPE error meldet

:?:


Lies bitte noch mal in meinen Beitrag oben:

Gefunden auf www.gnu.org:
As of bash-3.1, bash does not report SIGPIPE errors by default. You
can build a version of bash that will report such errors.

Offenbar stürzt equery/python aber ab, weil eben doch ein SIGPIPE error geliefert wird!

Oder?
Back to top
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6749

PostPosted: Wed Mar 28, 2007 3:04 pm    Post subject: Reply with quote

glockenstein wrote:
As of bash-3.1, bash does not report SIGPIPE errors by default.

Tut sie ja auch nicht. Zur Verdeutlichung habe ich ja das eix-Beispiel angegeben. Dass ein spezielles Programm (hier vermutlich: der Python-Interpreter) trotzdem feststellen kann, dass die Ausgabepipe weg ist und einen Fehler bringt, ist ja eine andere Sache.
Back to top
View user's profile Send private message
glockenstein
n00b
n00b


Joined: 26 Mar 2007
Posts: 10

PostPosted: Wed Mar 28, 2007 3:46 pm    Post subject: Reply with quote

mv wrote:
glockenstein wrote:
As of bash-3.1, bash does not report SIGPIPE errors by default.

Tut sie ja auch nicht. Zur Verdeutlichung habe ich ja das eix-Beispiel angegeben. Dass ein spezielles Programm (hier vermutlich: der Python-Interpreter) trotzdem feststellen kann, dass die Ausgabepipe weg ist und einen Fehler bringt, ist ja eine andere Sache.


Jetzt hab ich es kapiert. Ich habe die ganze Zeit angenommen, daß die bash auch keinen SIGPIPE error generieren
sollte, der python zum Absturz bringt. Und das mit eix, dachte ich, wäre eine Verwechslung gewesen.

Habe inzwischen einige Webseiten zu dem Thema SIGPIPE und python gelesen und deshalb dem Entwickler von
equery eine Mail geschrieben und gebeten, er möge ein "signal.signal(signal.SIGPIPE, signal.SIG_DFL)" in sein
Script aufnehmen. Mal sehen, was er schreibt.

Gruß, Micha.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum