Hallo zusammen,
heute habe ich mal wieder ein paar Stunden für das Thema spendiert und als C-Dummy im Quelltext herumgebastelt.
Unter dem Strich ist nicht viel dabei herausgekommen. Klar ist, das der connect-Aufruf für die socket -1 zurückliefert. Was laut
Doku bedeutet, das der Verbindungsversuch nicht erfolgreich war.
Die Ursache für den nicht erfolgreichen Verbindungsversuch soll per Fehlercode in der Variable "errno" übermittelt werden. Im Quelltext der Funktion startdaemon.c wird das auch alles schön behandelt:
static void
perr(msg)
char *msg;
{
extern int errno;
extern char *name;
char *strerror();
(void)printf("%s: %s: %s\n", name, msg, strerror(errno));
}
Die Funktion
... strerror(errno));
übersetzt den zurückgegebenen Fehlercode in "file not found".
Weil ich damit nicht viel anfangen kann und den tatsächlichen Fehlercode wissen wollte, habe ich das ganze mal geändert in:
... errno);
Da "errno" ja als int definiert ist, habe ich als Ergebins einen sinnvollen Zahlenwert erwartet, den ich dann z.B. mit
Hilfe dieser Liste hätte interpretieren können.
Leider bekomme ich aber totalen Kaudawelsch heraus und bin mal wieder ratlos.
/usr/ucb/lpr: connect: »µ»...
Irgendwelche Ideen, Hinweise, ...?
EDIT:
Muss ich "errno" für die Ausgabe anders formatieren? >>>
JANun ja, ich bin halt ein C-DAU ... da ich ja nun mit printf einen integer / Zahlenwert ausgeben möchte, sollte ich den auch nicht als string formatieren. Folglich muss ich für errno die Formatierung von %S auf %d ändern.
(void)printf("%s: %s: %d\n", name, msg, errno);
Und das ganze spuckt mir dann als Fehlercode die 33 aus
/usr/ucb/lpr: connect: 33
... was
in der Doku die ich gefunden habe, leider nicht beschrieben ist.
Also einen kleinen Schritt weiter gekommen ... aber dann auch wieder nicht
Gruß Heinz