LOCK

Andrej Cedilnik andrejc na tyr.fe.uni-lj.si
Pon Jan 27 01:45:03 CET 1997


Sedaj sem naredil lock in unlock takole, pa še isLocked ki pogleda če že
obstaja lock:

-----------------------------------------------------
#include <unistd.h>
#define FROOT "/tmp/"
#define LOCK  "lock.lck"

void lockOn(void){
   FILE *fd;
   if((fd=fopen(FROOT LOCK,"w"))!=NULL){
      fprintf(fd,"%d",getpid());
   }
   else error();
   fclose(fd);
}

void lockOff(void){
   unlink(FROOT LOCK);
}

int isLocked(vodi){
   FILE *fd, *fp;
   char pid[6], direc[12];
   int p=((fd=fopen(FROOT LOCK,"r"))!=NULL);
   if(p){
      fscanf(fd,"%s",pid);
      sprintf(direc,"/proc/%s",pid);
      if((fp=fopen(direc,"r"))==NULL){
	 lockOff();
	 p=0;
      }
      fclose(fd);
   }
   return p;
}
--------------------------------------------------------

Ali ve kdo še za kakšen popravek?
Osnovni problem je to da se program sesuje med delom in lock ostane.
Sedaj sem rešil tako da pogleda pid od programa. Problem pa je če neki
drugi program zaseda isti pid.



				Andy


-- 
                       * / *     andrejc na tyr.fe.uni-lj.si
 /-\ |  | |-\  \  /     \|/       http://vector.nevtron.si/andy
 | | |\ | |  |  \/    \--*--\    
 +-+ | \| |  |  /       /|\      "Gabber is the only drug!"        
 | | |  | |-/  /       * / *                "Let's get drugged!!"




Dodatne informacije o seznamu Starilist