#include<stdio.h> #include<sys/types.h> #include<sys/shm.h> #include<sys/ipc.h> #include \"headsem.h\" #include \"headfork.h\" main() { int max,min,np,a[10]; int *lock1,*finalmax,*finalmin; int id,n,i,sid1,sid2,sid3; sid1=shmget(IPC_PRIVATE,10,0666|IPC_CREAT); lock1=(int *)shmat(sid1,0,0); sid2=shmget(IPC_PRIVATE,10,0666|IPC_CREAT); finalmax=(int *)shmat(sid2,0,0); sid3=shmget(IPC_PRIVATE,10,0666|IPC_CREAT); finalmin=(int *)shmat(sid3,0,0); *finalmax=0; printf(\"Enter the size of array :\"); scanf(\"%d\",&n); printf(\"Enter the array elements :\"); for(i=0;i<n;i++) scanf(\"%d\",&a[i]); printf(\"Enter the no.of proc :\"); scanf(\"%d\",&np); lock_init(lock1); id=p_fork(np); max=a[0]; min=a[0]; for(i=id;i<n;i+=np) { if(a[i]>max) max=a[i]; if(a[i]<min) min=a[i]; } locksem(lock1); *finalmin=min; if(min<*finalmin) *finalmin=min; unlock(lock1); locksem(lock1); if(max > *finalmax) *finalmax=max; unlock(lock1); p_join(np,id); printf(\"minimum : %d\",*finalmin); printf(\"maximum : %d\",*finalmax); }