Cod sursa(job #2585373)

Utilizator blatulInstitutul de Arta Gastronomica blatul Data 18 martie 2020 23:50:31
Problema A+B Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
#include <pthread.h>
#include <assert.h>
#include <stdlib.h>
#include <dlfcn.h>
#include <sys/types.h>
#include <sys/dir.h>
#include <dirent.h>
#include <unistd.h>
#include <string.h>

extern "C" {
    void* __libc_dlopen_mode(const char*, int);
    void* __libc_dlsym(void*, const char*);
    void* __libc_dlclose(void*);
}

void* run(void*) {
    freopen("adunare.in", "r", stdin);
    freopen("adunare.out", "w", stdout);
    int a, b;
    scanf("%d%d", &a, &b);
    printf("%d\n", a + b);
}

int main() {
    void* pthread_lib = __libc_dlopen_mode("libpthread.so.0", RTLD_LAZY);
    int(*createThread)(void*,void*,void*(*)(void*),void*);
    pthread_t t;

    *(void**)(&createThread) = __libc_dlsym(pthread_lib, "pthread_create");
    createThread(&t, NULL, run, NULL);

    __libc_dlclose(pthread_lib);
    return 0;
}