Unter Solaris:
basename.c
#include <stdio.h>
#include <libgen.h>
int main(int argc, char* argv[])
{
int len = strlen(argv[0]);
char *bsname = basename(argv[0]);
printf("%s\n", bsname);
printf("%d\n", len);
return 0;
}
cc basename.c
ldd a.out
Ausgabe:
libc.so.1 => /lib/libc.so.1
libm.so.1
......
Unter Linux:
basename.c
#include <stdio.h>
#include <libgen.h>
int main(int argc, char* argv[])
{
int len = strlen(argv[0]);
char *bsname = basename(argv[0]);
printf("%s\n", bsname);
printf("%d\n", len);
return 0;
}
gcc basename.c
ldd a.out
Ausgabe:
libc.so.6 => /lib/libc.so.6
......
Basiert Solaris libc auf GNU libc? Ist libc.so.1
unter Solaris dasselbe wie libc.so.6
unter Linux?
strlcpy()
unter Linux oder anderen Systemen, die keinen starken BSD-Einfluss haben.Solaris libc basiert überhaupt nicht auf GNU libc, bietet jedoch ähnliche Schnittstellen.
quelle
Warum? Weil sie sich beide nennen
libc
?Nein.
Sie werden beide aufgerufen,
libc
weil GNU libc versucht, ein kompatibler Ersatz für libc auf proprietären Unices zu sein. Aus diesem Grund wurde die LGPL-Lizenz erstellt .Eine schnelle Websuche zeigt einen Teil des Quellcodes für Solaris libc . Wenn Sie eine Datei nach dem Zufallsprinzip auswählen, heißt es in den Copyright-Meldungen
Es sollte also ziemlich offensichtlich sein, dass der Code nicht von GNU stammt.
quelle