Hallo zusammen
Wenn ich in einem Programm Ctrl-D druecke welches signal wird dann gesendet ?
Bei Ctrl-C wird ja SIGINT gesendet.
gruss akula
Hallo zusammen
Wenn ich in einem Programm Ctrl-D druecke welches signal wird dann gesendet ?
Bei Ctrl-C wird ja SIGINT gesendet.
gruss akula
Es wird EOF gesendet, wenn ich mich nicht irre. Unter Windows war das aber Strg+Z, bei Linux Strg+D
I haven't lost my mind - It's somewhere on a backup-disc
und wie kann ich das in Perl abfangen ?
gruss
Ich kann kein Perl, aber google sagt mir: libipc-signal-perl verwenden
I haven't lost my mind - It's somewhere on a backup-disc
Hi,
EOF ist kein Signal. EOF kriegst du z.B. wenn du von einer Datei ließt und dabei über das Dateiende hinausließt. Je nach Technik des lesens kannst du dann das EOF verschieden abfragen (z.B. mit dem eof() Aufruf).
Was hat das jetzt mit Ctrl-D zu tun? Ganz einfach, wenn du von STDIN liest, so ist das wie lesen aus einer Datei nur das du eben die Zeichen von der Tastatur bekommst. Will der Benutzer seine Eingabe abschliessen, so drückt er Ctrl-D und dein Programm bekommt ein EOF gemeldet, was dann heißt, die Eingabe ist hier zu Ende ist.
Gruß
almoeli
das problem ist dann, dass wenn der User ctrl-d drueckt, dann wird das EOF an einen Server uebermittelt, der dies dann als aufforderung sich zu beenden interpretiert und das ist nicht ganz das ziel eines Servers.
heisst das jetzt, dass ich einfach beim server die eof() methode implementieren muss und das wars dann ?
hmm, in der Regel verwendet man doch eine ähnliche Struktur wie:
Ich nehme an, dass der Server ebenfalls so einen Loop enthält und bei EOF aus dem Loop fällt und sich beendet.Code:while ((c = getchar()) != EOF) machetwasmit(c);
Gruss, Andy
Lesezeichen