Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <semaphore.h>
- #include <unistd.h>
- #include "lib.h"
- #include <sys/types.h>
- #include <sys/wait.h>
- typedef struct{
- sem_t semA;
- sem_t semB;
- }DATA;
- DATA *data;
- int main(){
- pid_t pid;
- if((data = lib_init( sizeof(DATA)) ) == NULL ){
- perror("Err lib init\n");
- exit(-1);
- }
- if(sem_init( &data->semA, 1, 1 ) == -1 || sem_init( &data->semB, 1, 1 ) == -1){
- perror("Error sem init \n");
- exit(-1);
- }
- pid = fork();
- switch( pid ){
- case 0:
- sem_wait(&data->semA);
- printf("a1\n");
- sem_post(&data->semB);
- sem_wait(&data->semA);
- printf("a2\n");
- sem_post(&data->semB);
- lib_fini();
- return EXIT_SUCCESS;
- case -1:
- perror("Err fork\n");
- exit(-1);
- default:
- sem_wait(&data->semB);
- printf("b1\n");
- sem_post(&data->semA);
- sem_wait(&data->semB);
- printf("b2\n");
- sem_post(&data->semA);
- wait(NULL);
- lib_fini();
- }
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement