Matthias Teege wrote:
> bind (sockfd, sa, socksize)
>
> auf. Unter Linux funktioniert das aber ein strace unter BSD zeigt
> mir
>
> bind(0, {sa_family=AF_UNIX, path="dev/cg"}, 8)
>
> Hmm, es fehlt das letzte Zeichen. Ich ändere also den Code auf
>
> bind (sockfd, sa, socksize+1)
>
> und siehe da, es wirkt
>
> bind(0, {sa_family=AF_UNIX, path="dev/cgi"}, 9)
>
> Leider ist mir nicht klar, warum BSD einen Länge von 9 Byte anstatt
> 8 braucht.
bind(2) steht bei mir in der man page als
int bind(int s, const struct sockaddr *name, int namelen);
definiert. Ich interpretiere das so, dass namelen ein sizeof(struct
sockaddr) sein soll, und nicht nur die Länge des Strings in der struct.
Würde auch zur Definition der struct im sys/socket.h passen. Warum Linux
das anders akzeptiert, weiss ich nicht. IMHO ist die BSD Variante korrekt.
Till
To Unsubscribe: send mail to majordomo.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sat 08 Nov 2003 - 12:16:47 CET