Not logged in. · Lost password · Register

Steppenwolf
Schläfer
Avatar
Member since Nov 2002
1535 posts
Subject: trsh
hi,

@mikey:

22008 1   0:000   0:000 sleep 5
22006 1   0:000   0:000 sleep 2000 &
22005 1   0:000   0:000 sleep 1000 &

habe ich in deiner trsh.log gefunden.

1. anscheinend ist es normal, dass die joblist die prozesse in umgekehrter reihenfolge speichert, d. h. wenn du z. b.
sleep 1000 &
sleep 2000 &
eingibst, dann gibt er bei jobs
[...] sleep 2000 &
[...] sleep 1000 &
aus. genauso schreibt er es auch in die logdatei, wenn du die prozess mit einem interrupt killst. ist das so korrekt?

2. wahrscheinlich hast du die 3 prozesse mit einem interrupt gekillt, aber woher kommt bei dir dann der exitstatus 1? mit dem makro WEXITSTATUS sammle ich da nur nullen ein...

3. wo genau war der fehler in der joblist vom i4sp? koenntest du bitte nochmal die stelle aufzeigen, wo das free fehlt?

1000 dank,
-steppenwolf
Mikey
SP Team
Avatar
Member since Nov 2002
641 posts
hi,

1. Die Reihenfolge in der ich in die logdatei schreibe ist die in der die zombies aufgelesen werden. ich denke mal die reihenfolge spielt keine rolle, ergibt sich eben daraus das die jobliste an den beginn anfügt und ich sie von vorne durchlaufe..
in die Logdatei schreibe ich in der Reihenfolge in der eben die Zombies aufgesammelt werden, die sollte im Normalfall die Reihenfolge sein in der die Prozesse terminieren.

2. bei WIFSIGNALED gebe ich eben ein WEXITSTATUS(EXIT_FAILURE) aus.

3. in der delete_item gibt es nur ein free von dem element, es wurde aber vergessen auch den im element enthaltenen info string freizugeben, das habe ich in meiner version noch ausgebessert..

Gruss Mike
Steppenwolf
Schläfer
Avatar
Member since Nov 2002
1535 posts
Quote by Mikey:
3. in der delete_item gibt es nur ein free von dem element, es wurde aber vergessen auch den im element enthaltenen info string freizugeben, das habe ich in meiner version noch ausgebessert..

ok, das ist also die zeile
free(current->info);
, die habe ich jetzt noch in die i4sp-version hinzugefuegt...

ausserdem halte ich mich im moment fuer total bescheuert, weil mein makefile nicht funktioniert *duck*. wo ist hier der fehler?

.PHONY: all, install, clean

CC = gcc
CFLAGS = -ansi -D_XOPEN_SOURCE=500 -pedantic-errors -Wall -Werror -g

all: trsh

trsh: trsh.o, joblist.o
        $(CC) $(CFLAGS) -o trsh trsh.o joblist.o

trsh.o: trsh.c, joblist.h
        $(CC) $(CFLAGS) -c trsh.c

joblist.o: joblist.h, joblist.c
        $(CC) $(CFLAGS) -c joblist.c

install: trsh
        cp trsh ../bin.i386/

clean:
        rm -f joblist.o trsh.o trsh

auf jeden fall sagt er mir immer
make: *** No rule to make target `trsh.o,', needed by `trsh'.  Stop.

dabei hat er doch eine regel fuer trsh.o!
frahi
Avatar
Member since Nov 2002
777 posts
trsh: trsh.o, joblist.o

ob er da ein Komma akzeptiert bin ich mir net sicher, ich machs ohne:
trsh: trsh.o joblist.o

auserdem glaub ich nicht, dass der
 $(CC) $(CFLAGS) -c trsh.c
eine trsh.o erstellt eher eine a.out oder sowas, schreib da stattdessen besser:
$(CC) $(CFLAGS) -c -o trsh.o trsh.c
Steppenwolf
Schläfer
Avatar
Member since Nov 2002
1535 posts
ok, danke, das mit dem komma war es!
wenn man die fehlermeldung genau anschaut, sieht man auch, dass er nach dem target "trsh.o," sucht und nicht nach "trsh.o". das andere geht auch ohne -o, habe es jetzt aber trotzdem mal hinzugefuegt.
frahi
Avatar
Member since Nov 2002
777 posts
tatsache, hab grad in der manpage nachgeguckt:

-c
 ...
           By default, the object file name for a source file is made by
           replacing the suffix .c, .i, .s, etc., with .o.


Wenn man kein -c macht, erzeugt der gcc by default die a.out
tsunami
skankin´ foot
Avatar
Member since Jan 2003
352 posts
2 Fragen:

Es ist ja so, dass all meinen Hintergrund-Prozessen ein SIGQUIT geschickt werden soll, wenn ich meinen Vordergrundprozess mit nem Interrupt beende. Kann es sein, dass bei diesem SIGQUIT das WIFEXITED für die Hintergrundprozesse nicht auf True gesetzt wird?

Und zweitens: Wenn ich stattdessen mit WIFSIGNALED abfrage (das durch das SIGQUIT auf TRUE gesetzt wird), darf ich danach den Exitstatus mit WEXITSTATUS abfragen? In der man-page zu waitpid steht, dass dieses Makro nur im WIFEXITED-Fall abgefagt werden darf. Das mit WEXITSTATUS(EXIT_FAILURE) funzt bei mir nämlich nicht - er gibt trotzdem ne 0 und keine 1 aus!
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 on 2003-12-16, 10:49 by tsunami.
Steppenwolf
Schläfer
Avatar
Member since Nov 2002
1535 posts
@tsunami:

alles richtig, was du geschrieben hast! und das mit dem WEXITSTATUS (EXIT_FAILURE) geht wirklich nicht, aber so:

if (WIFSIGNALED (status)) exitstatus = EXIT_FAILURE;

geht es. have fun!
tsunami
skankin´ foot
Avatar
Member since Jan 2003
352 posts
hmm... Vielen Dank erstmal, aber meinst du mit "exitstatus" jetzt WEXITSTATUS oder status?  :-D
once you had a dream
of oceans, and sunken cities;
memories of things you´ve never known
and you have never known...   (Michael Stipe)
tsunami
skankin´ foot
Avatar
Member since Jan 2003
352 posts
hmm... damliche Frage eigentlich... :-p habs hingekriegt!
Thanx a lot, Steppenwolf! :cheesy:
once you had a dream
of oceans, and sunken cities;
memories of things you´ve never known
and you have never known...   (Michael Stipe)
Steppenwolf
Schläfer
Avatar
Member since Nov 2002
1535 posts
kein problem!

wie du wohl festgestellt hast, ist "exitstatus" der wert, den ich spaeter ausgebe...
ML
Avatar
Member since Oct 2003
66 posts
Subject: sleep
wie ist das eigentlich mit diesem sleep-problem, also aufgabe 5 c).
Bei mir funktioniert das noch nicht. ich gebe folgendes in meine trsh ein:

sleep 10 &
sleep 100

dann terminiert aber mein "sleep 100" befehl schon nach maximal 10 sekunden.

woran liegt das und wie kann ich das beheben?

Außerdem habe ich probleme, nachdem ich in meiner trsh einen Prozess im Hintergrund laufen hab lassen, zumbeispiel den befehl "ls -l" oder "ps u" auszuführen. diese prozesse scheinen dann irgendwie nicht mehr zu terminieren.also sie machen noch die ausgabe, aber der prompt kommt nicht mehr ...   wenn ich hingegen diese befehle aufrufe, ohne vorher bereits in meine trsh irgendeinen prozess mit "&" in den Hintergrund geschoben zu haben, terminieren sie wie gewünscht ... 

und woran könnte das nun liegen ? :-)

entschuldigt, vielleicht sind die fragen zu trivial, nur habe ich große probleme mit der aufgabe 5 und bin grad bei teilaufgabe c)  (Aufgabe 6 hingegen ist fertig)

Gruß
This post was edited 2 times, last on 2004-01-08, 07:22 by ML.
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:
Go to forum
Datenschutz | Kontakt
Powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2011 by Yves Goergen