Reload module in loop
This commit is contained in:
parent
86a8a6c5f7
commit
519443ed07
23
main.c
23
main.c
@ -13,10 +13,27 @@ typedef const char *(*getmsg_t)(void);
|
||||
|
||||
int main(void)
|
||||
{
|
||||
void *mod = dlopen("libmod.so", RTLD_NOW);
|
||||
const getmsg_t getmsg = (getmsg_t)dlsym(mod, "getmsg");
|
||||
const struct timespec pause = { .tv_nsec = 16666667 };
|
||||
const char *libfn = "libmod.so";
|
||||
const char *symn = "getmsg";
|
||||
void *mod = NULL;
|
||||
getmsg_t getmsg = NULL;
|
||||
const struct timespec pause = { .tv_nsec = 100000000 };
|
||||
while (1) {
|
||||
if (mod)
|
||||
dlclose(mod);
|
||||
mod = dlopen(libfn, RTLD_NOW);
|
||||
if (!mod) {
|
||||
fprintf(
|
||||
stderr, "Error: couldn't open %s: %s\n", libfn, dlerror());
|
||||
return 1;
|
||||
}
|
||||
getmsg = (getmsg_t)dlsym(mod, symn);
|
||||
if (!getmsg) {
|
||||
fprintf(
|
||||
stderr, "Error: couldn't find symbol %s: %s\n", symn,
|
||||
dlerror());
|
||||
return 1;
|
||||
}
|
||||
printf("\33[2K\r%s", getmsg());
|
||||
fflush(stdout);
|
||||
nanosleep(&pause, NULL);
|
||||
|
Loading…
x
Reference in New Issue
Block a user