自分自身を dlopen するプログラムを書きました
void hello()
{
printf("hello world\n");
}
int main(int argc, char **argv)
{
char *buf="hello";
void *hndl = dlopen(argv[0], RTLD_LAZY);
void (*fptr)(void) = dlsym(hndl, buf);
if (fptr != NULL)
fptr();
dlclose(hndl);
}
しかし、「segemention fault」エラーが発生します。このプログラムを .so ライブラリでテストしましたが、動作しますが、それ自体では動作しません。