Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _GNU_SOURCE
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/ipc.h>
- #include <sys/sem.h>
- #include <unistd.h>
- #include <sys/wait.h>
- int main(){
- unsigned int semid;
- struct sembuf up1 = {0, 1, 0}; //number, operation, flag
- struct sembuf down1 = {0, -1, 0}; //number, operation, flag
- struct sembuf up2 = {1, 1, 0};
- struct sembuf down2 = {1, -1, 0};
- semid = semget(IPC_PRIVATE, 2, 0666|IPC_CREAT);//crée 1 sémaphore
- semctl(semid, 0, SETVAL, 0); //initialise la valeur à 0 sur le premier sémaphore
- semctl(semid, 1, SETVAL, 0);
- int i = 0;;
- int PID = fork();
- if (PID == 0)
- {
- for(i=0;i<5;i++)
- {
- printf("COUCOU C'EST LE FILS\n");
- semop(semid, &up1, 1);
- semop(semid, &down2, 1);
- }
- }
- else
- {
- for(i=0;i<5;i++)
- {
- semop(semid, &down1, 1);
- printf(" %d \n",i+1);
- semop(semid, &up2, 1);
- }
- //effectue un up (operation 1)
- }
- semctl(semid, 0, IPC_RMID);
- semctl(semid, 1, IPC_RMID);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement