Not logged in. · Lost password · Register

Page:  previous  1  2  3 
Mikey
SP Team
Avatar
Member since Nov 2002
641 posts
klar, aber du kannst ja solange im handler waitpid mit WNOHANG ausführen bis du irgendwann ne 0 als Rückgabe hast und damit alle Zombies auflesen die bis dato angefallen sind..
frahi
Avatar
Member since Nov 2002
777 posts
In reply to post ID 10982
Quote by MeistaJo:
Auf den Übungsfolien steht: "Es wird maximal ein Signal zwischengespeichert". Siehe Link, Folie 10.


Im System existiert eine Bitliste, in dem fuer jedes Signal (also jede Art von Signal, z.B. SIGCHLD, SIGINT) ein Bit existiert, also gesetzt oder nicht gesetzt.
Deshalb kann,wenn ein Signal ankommt, blockiert wird und noch eines kommt, dieses Bit nur gesetzt bleiben. Man kann also im Signalhandler nicht unterscheiden, ob das Signal nun einmal oder oefter gekommen ist.

Deshalb muss die Semantik von dem sigchildhandler auch: "Hole alle Childs, die im gestorben sind" sein.


2 Signale unterschiedlichen Types wenn kommen, stoeren die sich nicht gegenseiten, es gibt ja jeweils ein Bit, dann werden die beide bearbeitet.
This post was edited on 2003-12-17, 20:43 by frahi.
tsunami
skankin´ foot
Avatar
Member since Jan 2003
352 posts
gesetz dem fall meine shell wartet auf ne Eingabe. Währenddessen stirbt ein Hintergrundprozess und mein child-handler knallt mir den Exitstatus  rein. Bei der Muster-trsh-Fassung beendet sich dann die trsh da sie ein EOF und dazu den stdin-ferror "Interrupted System call" liest. Weiss jemand woran das liegen kann?!
once you had a dream
of oceans, and sunken cities;
memories of things you´ve never known
and you have never known...   (Michael Stipe)
This post was edited 4 times, last on 2003-12-20, 20:06 by tsunami.
Eem
staatl. geprüfter Peppeneulenprüfer
Avatar
Member since Oct 2002
435 posts
muster-trsh??
die muster-mysh hat garkeine im & ausführen funktion.nicht böse sein,  aber ich glaube den fehler hast du selbst zu verantworten...
wenn du magst kannst ja heute mal ins cip kommen (2. stock) da wern der q und ich unsere trash fertig coden.
Casaubon
Avatar
Member since Oct 2003
9 posts
Muss man eigentlich die signale SIGCHLD und SIGINT blockieren, wenn man mit der joblist arbeitet? Wenn ja, wie werden dann die evtl in der zwischenzeit blockierten signale behandelt?

gruesse,
frahi
Avatar
Member since Nov 2002
777 posts
ja muss man,

jedes Signal kann waehrend es blockiert ist nur einmal als ankommen markiert werden,d.h. wenn 2 SIGCHLDs kommen waehrend SIGCHLD blockiert ist, ist nur gesetzt, dass eines gekommen ist. Wenn man die Signale deblockiert, werden die als gekommen gesetzen Signale abgearbeitet.
D.h. dass z.B. der Signalhandler fuer SIGCHLD auch mehrer Kinder abholen koennen muss, oder gar keines.
This post was edited on 2004-01-03, 10:56 by frahi.
Str1ch444
Member since Jun 2003
312 posts
D.h. man muss mit dem sigprocmask halt SIGCHLD und SIGINT blockieren und wieder deblockieren, sonst nichts. Die verpassten Signale kommen automatisch wieder an?
frahi
Avatar
Member since Nov 2002
777 posts
genau
snehls
Superfreund aka Der Schwede
Avatar
Member since Oct 2002
750 posts
In reply to post #33
Quote by tsunami:
gesetz dem fall meine shell wartet auf ne Eingabe. Währenddessen stirbt ein Hintergrundprozess und mein child-handler knallt mir den Exitstatus  rein. Bei der Muster-trsh-Fassung beendet sich dann die trsh da sie ein EOF und dazu den stdin-ferror "Interrupted System call" liest. Weiss jemand woran das liegen kann?!

woran lags denn, ich hab das problem auch
"I will speculate that today’s single-threaded applications as actually used in the field could actually see a performance boost for most users by going to a dual-core chip, not because the extra core is actually doing anything useful, but because it is running the adware and spyware that infest many users’ systems and are otherwise slowing down the single CPU that user has today."
tsunami
skankin´ foot
Avatar
Member since Jan 2003
352 posts
sorry dass ich die antwort geheim hielt...  *reusper*
du musst die sa_flags nicht auf 0 sondern auf SA_RESTART setzen, damit System Calls wie eben getc() nach einem Interrupt (z.B. durch ein SIGCHLD) automatisch wieder aufgesetzt werden!
Damit war das Problem zumindest bei mir behoben.
once you had a dream
of oceans, and sunken cities;
memories of things you´ve never known
and you have never known...   (Michael Stipe)
lo_pez
Affe mit Süßwaren
Avatar
Member since Jan 2004
62 posts
In reply to post ID 10769
Subject: Signale und ANSI
Quote by Steppenwolf:
bin mittlerweile bis zu den signalen vorgekommen und kann den quellcode nur ohne den ansi- und posix-flag kompilieren. muss das so sein oder hab ich noch irgendwas falsch gemacht?

das hatte ich auch gestern. lustig, dass sich heute alles (trsh und timed) auch mit "-ansi -D_XOPEN_SOURCE=500" kompilieren lässt... und zwar inkl. sigaction...
"Macht's gut ihr Trottel!" [Homer]
Legolas
Member since Dec 2002
72 posts
In reply to post #40
Bei mir kommt der Fehler (allerdings bei der timed-Aufgabe), obwohl ich SA_RESTART gesetzt habe. Das treibt mich langsam in den Wahnsinn, weil ich keine Ahnung hab, an was es sonst liegen könnte...

Irgendwie ist es mir absolut schleierhaft, wie bei einem im struct sigaction gesetztem SA_RESTART Systemcalls mit EINTR abbrechen können...
This post was edited on 2004-01-06, 00:31 by Legolas.
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Page:  previous  1  2  3 
Go to forum
Datenschutz | Kontakt
Powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2011 by Yves Goergen