Re: unterschiedliche bind(2) Implementierung FreeBSD/Linux?

From: till toenges <tt(at)mail.isis.de>
Date: Sat, 08 Nov 2003 12:14:12 +0100

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

search this site