pthread のバージョンを確認したいでござる
pthread で NPTL が使われてるかどうか確認したかったのだけど、ただしく確認する方法がよくわからなかったので confstr で調べた。
#include <malloc.h>
#include <stdio.h>
#include <unistd.h>
int main() {
char *buf;
size_t n;
n = confstr(_CS_GNU_LIBPTHREAD_VERSION, NULL, (size_t) 0);
buf = malloc(n);
if (buf == NULL) {
printf("Cannot allocate memory\n");
return;
}
confstr(_CS_GNU_LIBPTHREAD_VERSION, buf, n);
printf("%s\n", buf);
}
昔の LinuxThreads では SIGUSR1, SIGUSR2 を使っていたりしていてユーザーが SIGUSER[12] 使えないなどの問題があったために、Linux 2.6 以後は NPTL に置き換えられており、もはや動作しているシステムでは殆どの場合、NPTL であると仮定してしまってよいように思う。とくに、新規で何かを作る場合、あえて LinuxThreads をサポートする必要はない。のだと思う。