Aufgabe 3

mini_sh

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Aufgabe 3
Kann man bei der mini_sh auch mehr als nur eine source datei abgeben? Das Skript lässt ja zu mehr Dateien abzugeben, und da unserere mini_sh gerade an den 1000 zeilen code hängt glaub ich wärs sinnvoll die aufzuteilen (auch im Hinblick auf den Korrektor :slight_smile: ). Gibt das irgendwelche Probleme später?


Man muss hierzu aber sagen, dass unsere Shell den Namen mini_sh nicht mehr tragen dürfte.
Was da alles an Funktionalität drinsteckt…


ich schätze die kümmert das nicht…teils halt auf ^^


Ne offizielle Antwort wär halt schön


[size=7]der 100ste Post! :)[/size]

Aufteilen oder nicht?
Man darf, ABER die Aufgabe heisst mini_sh!

Ihr sollt nur den Funktionumfang implementieren der auch gefordert ist. Wenn
Ihr mehr implementiert ist das einfach euere private Angelegenheit. Bewertet
wird bekanntlich wie folgt 12 Punkte fuer die geforderten Funktionen und das
Makefile minus den Fehlerpunkten, die der Korrektor findet.

Wenn man bedenkt das Korrektor bei einer umfangreichen Abgabe mehr
Fehler finden kann und sicher nicht erfreut darueber ist sein Wochenende
damit zu verbringen viel zu korriegieren, ja dann faehrt man sicher besser
sich kurz zufassen.

Wir koennten ja mal die kleinste mini_sh-Wettbewerb starten. :cheesy:


hmm auch wieder wahr - ganz klar ein fall für ein paar #define MINI :stuck_out_tongue:

danke mal für die schnelle antwort, dann heisst es auf jeden fall mal gut aufräumen … :slight_smile: (args die turing-machine wieder raus … :P)


wann gibts dann das sos1_wait ? will wissen um mein programm erkennt obs per signal abgeschossen wird :slight_smile:


Du kannst ja einfach ein minimal-C programm schreiben dass einen SIGSEGV produziert (nach wsort sollte das ja wohl jeder können :slight_smile: ) … dann kriegst du dein signal in sekunden. Eine sichere Methode ist du machst dir nen pointer nach und schreibst mal rein …


gute idee :slight_smile: habs bis jetzt so gemacht dass ich zweimal per ssh auf den gleichen cip-rechner gehe und dann vom einen über die mini_sh zB top starte und es dann vom anderen abschiesse, kommt auch die richtige meldung und danach wieder der mini_sh prompt, aber irgendwie liesst er dann nichts mehr ein :frowning:


Was nimmst du zum einlesen her? Ich benutz getc und das geht eigentlich einwandfrei …


ich benutze getchar :smiley: … funzt eigentlich auch einwandfrei, nur wenn man das ausgeführte programm abschiesst sieht man nur noch den cursor, aber reagiert auf nichts mehr :frowning:

edit: sehr seltsam, wenn ich “wc” starte und es abschiesse mit “kill -QUIT pid” oder “kill -INT pid” funktioniert das ohne probleme, nur bei vim und top nicht, mehr hab ich noch nicht probiert.


ich werd mal ein wenig heute nacht meine mini_sh polieren, da probier ich mal ein wenig rum - vielleicht ergibt sich ja was … bei mir gings beim letzten mal noch (habs allerdings nur lokal getestet, nicht via ssh auf der uni)


Du kannst anstelle von sos_wait auch sleep verwenden, zB

sleep 20

schlaeft 20 sekunden. In der Zeit kannst Du den Prozess abschiessen. Falls Du mit Signal abbrechen willst reicht ein CTRL+C fuer ein SIGINT (kein Coredump), oder CTRL+\ fuer SIGQUIT (Coredump wenn aktiviert).
(sorry das ueberlebt Deine Shell leider nicht solange Du die Signale nicht ignorierst… also doch kill benutzen.)

Ich weiss nicht was sos_wait macht, aber ich denke auch nicht mehr als einen Dornröschenschlaf…
Warum Deine Eingabe nicht mehr geht kann ich Dir leider ohne Source Code auch nicht verraten.
Nur ein allgemeiner Hinweis: CTRL+S ist eine Tastensequenz aus frueheren Zeiten die man verwendet hat um das Scrollen zu Stoppen (da waren die Terminals noch etwas langsamer). Gerade in Verbindung mit screen tippt man mal neben das a und trifft das s und wundert sich dass die Shell ploetzlich nicht mehr reagiert. Mit CTRL+Q kann man das wieder aufheben. Vielleicht ist Dir das ja passiert :wink:

Ich habe das sos1_wait von letztem Jahr mal in mein Home gelegt:
http://wwwcip.informatik.uni-erlangen.de/~simistil/
Aber ich glaube mehr als Schlafen macht das wirklich nicht…


vielen dank. damit funktioniert es auch 1a.

faui05 [src]> mini_sh
/home/cip/2005/sijuhasl/c/aufgabe3/src: sos1_wait
Signal [ sos1_wait ] = 3 (core dumped)
/home/cip/2005/sijuhasl/c/aufgabe3/src: sos1_wait
Signal [ sos1_wait ] = 2
/home/cip/2005/sijuhasl/c/aufgabe3/src:

nur irgendwie bei programmien wie top oder vim, reagiert die mini_sh auf keine eingabe mehr :frowning: vielleicht steckt irgendwo ein dummer fehler drin, aber will hier jetzt kein quellcode posten


war das eigentlich ein joke :slight_smile: ? weil irgendwie komm ich grad ma auf 100 zeilen (fehlerbehandlung mitgezaehlt)


vim und top verbiegen euch evtl auch noch ein bisschen das terminal, damit sie ihren Inhalt auch schoen aufs ganze Terminal mitbekommen. Da wuerd ich mir keine so grossen gedanken machen, wobei ich grad auch nicht weis, warum die das nicht wieder zurueckbiegen.


Nein das war kein Joke. Diese mini_sh enthielt eine komplette Stack/Registermaschine mit der du alles ausrechnen konntest was berechenbar ist :slight_smile: War halt ein superpraktischer “Taschenrechner” … Ich stell die OpenSource nach der Abgabe wenn interesse besteht.

@Korrektor: Alles rausgefieselt mittlerweile, jetzt sinds nur noch 200 zeilen oder so.
@Staff: Wann darf man seinen Code frühestens veröffentlichen? Werde ich “disqualifiziert” wenn ich hier mal meine ““mini”_sh extrem” poste?


okey :slight_smile: dann mach ich mir mal keine weiteren großen gedanken, kann mich ja mal in die rechnerübung bequemen und einen übungsleiter damit nerven :stuck_out_tongue:

edit: sieht so aus:

faui05 [src]> mini_sh
/home/cip/2005/sijuhasl/c/aufgabe3/src: vim
Vim: Caught deadly signal QUIT
Vim: Finished.
Signal [ vim ] = 2
                  /home/cip/2005/sijuhasl/c/aufgabe3/src:

und nach dem ": " ist noch der standart-cursor, aber es passiert nichts mehr bei tastendruck

@anteru: disqualifiziert wirste nicht, aber vll bekommst du einen freak-orden :smiley:


Ich wuerde damit bis nach der Abgabe warten sonst geben vielleicht andere Dein Programm ab und Du bekommst 0 Punkte :slight_smile: