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

From: Jens Rehsack <rehsack(at)liwing.de>
Date: Sat, 08 Nov 2003 11:34:47 +0000

till toenges wrote:
> 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.

Hast ja recht. War wohl zu früh am morgen :-)
In sys/un.h ist es ja auch entsprechend definiert - also
daran sollte man sich auch halten :-)

Jens

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:35:25 CET

search this site