annotate resources/master.c @ 36:8acbab5a9f21

Remove stream buffering on stdout & stderr
author Louis 'Kureuil' Person <louis.person@epitech.eu>
date Sat, 30 Apr 2016 23:48:19 +0200
parents
children 7857f8eea835
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
36
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
1 #include <stdlib.h>
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
2 #include <stdio.h>
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
3 #include <dlfcn.h>
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
4
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
5 typedef int (*main_t)(int, char **, char **);
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
6
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
7 int main(int argc, char **argv, char **envp)
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
8 {
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
9 char *error = NULL;
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
10
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
11 setbuf(stdout, NULL);
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
12 setbuf(stderr, NULL);
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
13 if (argc < 2) {
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
14 fprintf(stderr, "USAGE: %s PROGRAM\nWhere PROGRAM is the user's program to supervise\n", argv[0]);
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
15 return EXIT_FAILURE;
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
16 }
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
17 void *userhandle = dlopen(argv[1], RTLD_LAZY);
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
18 if (userhandle == NULL) {
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
19 fprintf(stderr, "%s: %s\n", argv[0], dlerror());
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
20 return EXIT_FAILURE;
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
21 }
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
22 dlerror();
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
23 main_t usermain = dlsym(userhandle, "main");
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
24 if ((error = dlerror()) != NULL) {
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
25 fprintf(stderr, "%s: %s\n", argv[0], error);
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
26 return EXIT_FAILURE;
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
27 }
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
28 return usermain(argc, argv, envp);
8acbab5a9f21 Remove stream buffering on stdout & stderr
Louis 'Kureuil' Person <louis.person@epitech.eu>
parents:
diff changeset
29 }