#include #include #include #include #define N 8*1024*1024 char tab[N]; int main(void) { for (int i = 0; i < N; i++) tab[i] = (char)i; printf("Avant fork : tab = %p\n", (void *)tab); pid_t pid = fork(); if (pid < 0) { perror("fork"); exit(EXIT_FAILURE); } if (pid == 0) { printf("Fils : tab = %p, tab[5000] = %d\n", (void *)(tab+5000), tab[5000]); printf("FILS PID = %d\n", getpid()); getchar(); tab[5000] = 42; printf("-> modification\n"); getchar(); printf("Fils après modification : tab[5000] = %d\n", tab[5000]); exit(EXIT_SUCCESS); } else { sleep(1); printf("Père : tab = %p, tab[5000] = %d\n", (void *)tab, tab[5000]); wait(NULL); } return 0; }