Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "myinclude.h"
- int main(){
- setbuf(stdout,0);
- int i;
- key_t key=ftok(".",'a');
- int flag=IPC_CREAT|0660;
- int semid=semget(key,3,flag);
- int shmid=shmget(key,sizeof(int),flag);
- if(shmid<0)syserr("shmget hiba");
- int* shm=shmat(shmid,0,0);
- printf("%p\n",shm);
- if(semid<0)syserr("semget hiba");
- if(semctl(semid,0,SETVAL,1)<0) syserr("semctl1 hiba");//fiu
- if(semctl(semid,1,SETVAL,0)<0) syserr("semctl2 hiba");//apa
- if(semctl(semid,2,SETVAL,0)<0) syserr("semctl3 hiba");//fiu fia
- FILE*f=fopen("szamok.txt","w");
- pid_t p=fork();
- if(p<0)syserr("fork hiba");
- struct sembuf up={0,1,0};
- struct sembuf down={0,-1,0};
- struct sembuf up1={1,1,0};
- struct sembuf down1={1,-1,0};
- struct sembuf up2={2,1,0};
- struct sembuf down2={2,-1,0};
- //fiu
- if(p==0){
- pid_t p1=fork();
- if(p1==0){
- for(i=0;i<10;++i){
- semop(semid,&down,1);
- *shm=0;
- fprintf(f,"%i",*shm);
- semop(semid,&up1,1);
- }
- }
- else{
- for(i=0;i<10;++i){
- semop(semid,&down1,1);
- *shm++;
- fprintf(f,"%i",*shm);
- semop(semid,&up2,1);
- }
- }
- }
- //apa
- else{
- for(i=0;i<10;++i){
- semop(semid,&down2,1);
- *shm++;
- fprintf(f,"%i",*shm);
- semop(semid,&up,1);
- }
- wait(0);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement