(02) add Makefile and fix code convention
This commit is contained in:
parent
6013fdb234
commit
1da4836936
2 changed files with 17 additions and 5 deletions
9
02-fork-chimera/Makefile
Normal file
9
02-fork-chimera/Makefile
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
CC = gcc
|
||||||
|
CFLAGS = -ansi -pedantic -pedantic-errors -Wall -Werror -Wextra
|
||||||
|
SRC = main.c
|
||||||
|
|
||||||
|
all:
|
||||||
|
$(CC) $(CFLAGS) $(SRC) -o clone
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm clone
|
|
@ -41,15 +41,15 @@ void help(char *name)
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
int flags, c_pid;
|
||||||
|
char *mode, *stack;
|
||||||
|
|
||||||
if (argc < 2)
|
if (argc < 2)
|
||||||
{
|
{
|
||||||
help(argv[0]);
|
help(argv[0]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *mode = argv[1];
|
|
||||||
int flags;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Je mets SIGCHLD quand on fait un fork basique, histoire d'avoir au moins
|
* Je mets SIGCHLD quand on fait un fork basique, histoire d'avoir au moins
|
||||||
* un flag. En théorie, il n'y en a pas besoin vu qu'on ne souhaite pas
|
* un flag. En théorie, il n'y en a pas besoin vu qu'on ne souhaite pas
|
||||||
|
@ -58,6 +58,8 @@ int main(int argc, char *argv[])
|
||||||
* Pas besoin de notifier le père pour la chimère, on met directement le
|
* Pas besoin de notifier le père pour la chimère, on met directement le
|
||||||
* flag pour partager la zone mémoire.
|
* flag pour partager la zone mémoire.
|
||||||
*/
|
*/
|
||||||
|
mode = argv[1];
|
||||||
|
|
||||||
if (!strcmp(mode, "fork")) flags = SIGCHLD;
|
if (!strcmp(mode, "fork")) flags = SIGCHLD;
|
||||||
else if (!strcmp(mode, "chimera")) flags = CLONE_VM;
|
else if (!strcmp(mode, "chimera")) flags = CLONE_VM;
|
||||||
else if (!strcmp(mode, "thread")) flags = CLONE_VM | CLONE_THREAD
|
else if (!strcmp(mode, "thread")) flags = CLONE_VM | CLONE_THREAD
|
||||||
|
@ -68,8 +70,7 @@ int main(int argc, char *argv[])
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *stack = (char *) malloc(STACK_SIZE);
|
stack = (char *) malloc(STACK_SIZE);
|
||||||
int c_pid;
|
|
||||||
|
|
||||||
printf("Coucou depuis le parent\n");
|
printf("Coucou depuis le parent\n");
|
||||||
printf("parent id: %d\n", getppid());
|
printf("parent id: %d\n", getppid());
|
||||||
|
@ -82,6 +83,8 @@ int main(int argc, char *argv[])
|
||||||
*/
|
*/
|
||||||
c_pid = clone(child, (stack + STACK_SIZE - 1), flags, NULL);
|
c_pid = clone(child, (stack + STACK_SIZE - 1), flags, NULL);
|
||||||
|
|
||||||
|
printf("[Parent] PID enfant: %d\n", c_pid);
|
||||||
|
|
||||||
while (counter < 4)
|
while (counter < 4)
|
||||||
{
|
{
|
||||||
printf("[Parent] Counter: %d\n", counter);
|
printf("[Parent] Counter: %d\n", counter);
|
||||||
|
|
Loading…
Reference in a new issue