ソラリスの場合:
デフォルト名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
出力:
libc.so.1 => /lib/libc.so.1
libm.so.1
......
Linuxの場合:
デフォルト名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
出力:
libc.so.6 => /lib/libc.so.6
......
Solaris libcはGNU libcに基づいていますか?libc.so.1
LinuxとSolarisは同じですかlibc.so.6
?
ベストアンサー1
Solaris CライブラリはGNU Cライブラリに基づいていません。どちらもC標準とPOSIXインタフェースと他のいくつかの標準を実装していますが、それ以上に共通の遺産はありません。
Solaris libc.so.1はAT&T System VCライブラリに根ざしています。
GNU libc.so.6はglibc 2.0以降に基づいています。以前のバージョンのLinux Cライブラリ(例:libc.so.5)は、以前のglibc 1.xバージョンのフォークでした。
これら2つのライブラリの間にはいくつかの違いがあります。たとえば、Solaris libcにはglibcに含まれていないいくつかの文字列操作が含まれています。strlcpy()
これは私のビューにとって最も明白です。
追加情報(10年以上後):strlcpy()
まもなくstrlcat()
リリースされる予定です。glibc 2.38