Advertisement
Guest User

Untitled

a guest
Sep 2nd, 2015
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.18 KB | None | 0 0
  1. #include "myinclude.h"
  2.  
  3. int main(){
  4.  
  5. setbuf(stdout,0);
  6. int i;
  7. key_t key=ftok(".",'a');
  8. int flag=IPC_CREAT|0660;
  9. int semid=semget(key,3,flag);
  10. int shmid=shmget(key,sizeof(int),flag);
  11. if(shmid<0)syserr("shmget hiba");
  12. int* shm=shmat(shmid,0,0);
  13. printf("%p\n",shm);
  14.  
  15. if(semid<0)syserr("semget hiba");
  16.  
  17. if(semctl(semid,0,SETVAL,1)<0) syserr("semctl1 hiba");//fiu
  18. if(semctl(semid,1,SETVAL,0)<0) syserr("semctl2 hiba");//apa
  19. if(semctl(semid,2,SETVAL,0)<0) syserr("semctl3 hiba");//fiu fia
  20.  
  21. FILE*f=fopen("szamok.txt","w");
  22.  
  23. pid_t p=fork();
  24.  
  25. if(p<0)syserr("fork hiba");
  26.  
  27. struct sembuf up={0,1,0};
  28. struct sembuf down={0,-1,0};
  29.  
  30. struct sembuf up1={1,1,0};
  31. struct sembuf down1={1,-1,0};
  32.  
  33. struct sembuf up2={2,1,0};
  34. struct sembuf down2={2,-1,0};
  35.  
  36. //fiu
  37. if(p==0){
  38. pid_t p1=fork();
  39. if(p1==0){
  40.     for(i=0;i<10;++i){
  41.         semop(semid,&down,1);
  42.         *shm=0;
  43.         fprintf(f,"%i",*shm);
  44.         semop(semid,&up1,1);
  45.     }
  46. }
  47. else{
  48.     for(i=0;i<10;++i){
  49.         semop(semid,&down1,1);
  50.         *shm++;
  51.         fprintf(f,"%i",*shm);
  52.         semop(semid,&up2,1);
  53.     }
  54. }
  55. }
  56. //apa
  57. else{
  58.     for(i=0;i<10;++i){
  59.         semop(semid,&down2,1);
  60.         *shm++;
  61.         fprintf(f,"%i",*shm);
  62.         semop(semid,&up,1);
  63.     }
  64. wait(0);
  65. }
  66.  
  67. return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement