C   36
atomictest
Guest on 20th September 2023 12:11:08 AM


  1. #include <sys/wait.h>
  2. #include <sys/stat.h>
  3. #include <unistd.h>
  4. #include <sys/types.h>
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include <fcntl.h>
  8. #include <stdlib.h>
  9. int main(){
  10.         //int i;
  11.         int commonfile = open("commonfile",O_RDWR | O_CREAT | O_TRUNC , 0666);
  12.         //pid_t pid[5];
  13.        
  14.        
  15.         struct flock f;
  16.         f.l_type = F_WRLCK;
  17.         f.l_start = 0;
  18.         f.l_whence = SEEK_SET;
  19.         f.l_len = 0;
  20.         f.l_pid = getpid();
  21.         printf("here0\n");
  22.         printf("%d\n",fcntl(commonfile,F_SETLK,&f));
  23.         //write(commonfile,buffer,strlen(buffer));
  24.         printf("here\n");
  25.                                
  26.         //struct flock f2;
  27.         f.l_type = F_UNLCK;
  28.         //f2.l_start = 0;
  29.         //f2.l_whence = SEEK_SET;
  30.         //f2.l_len = 0;
  31.         //f2.l_pid = getpid();
  32.         printf("%d\n",fcntl(commonfile,F_SETLK,&f));
  33.        
  34.         struct flock f3;
  35.         f3.l_type = F_WRLCK;
  36.         f3.l_start = 0;
  37.         f3.l_len = 0;
  38.         f3.l_whence = SEEK_SET;
  39.         f3.l_pid = getpid();
  40.         printf("%d\n",fcntl(commonfile,F_SETLK,&f3));
  41.         printf("here2\n");
  42.        
  43.         /*
  44.         for(i=0;i<5;i++){
  45.                 pid[i] = fork();
  46.                 if(pid[i]==0){
  47.                         int j=0;
  48.                         char buffer[100];
  49.                         for(j=0;j<10;j++){
  50.                                 sprintf(buffer,"this is process no %d print no %d\n",getpid(),j);
  51.                                 struct flock f;
  52.                                 f.l_type = F_WRLCK;
  53.                                 f.l_start = 0;
  54.                                 f.l_whence = SEEK_SET;
  55.                                 f.l_len = 0;
  56.                                 f.l_pid = getpid();
  57.                                 fcntl(commonfile,F_SETLKW,&f);
  58.                                 //write(commonfile,buffer,strlen(buffer));
  59.                                 printf("here\n");
  60.                                
  61.                                 struct flock f2;
  62.                                 f2.l_type = F_UNLCK;
  63.                                 f2.l_start = 0;
  64.                                 f2.l_whence = SEEK_SET;
  65.                                 f2.l_len = 0;
  66.                                 f2.l_pid = getpid();
  67.                                 fcntl(commonfile,F_SETLKW,&f2);
  68.                                 //int commonfile2 = open("commonfile",O_WRONLY | O_APPEND,00777);
  69.                                 //write(commonfile,buffer,strlen(buffer));
  70.  
  71.                         }
  72.                         exit(0);
  73.                 }
  74.         }
  75.         int status[5];
  76.         for(i=0;i<5;i++){
  77.                 waitpid(pid[i],&status[i],0);
  78.         }
  79.         */
  80.         //printf("commonfile descriptor = %d\n",commonfile);
  81. }

Raw Paste

Login or Register to edit or fork this paste. It's free.