http://uw714doc.sco.com/en/SDK_sysprog/_Setting_a_File_Lock.html
2008/6/12 Mehmet Gürevin <mehmetgurevin_at_gmail.com>:
> Merhabalar, umutsuzca 3 saat kivrandiktan sonra sizlere sormaya karar verdim.
>
> Acemi bir c programcisiyim. Bir sunucu uygulamasi yaziyorum ve
> sunucunun ikinci kez calismadigindan emin olmak icin bir pid dosyasi
> yazip dosyayi kilitlemek istiyorum.
>
> dosya kilitlendikten sonra bence root kullanicisi dahil kilit cozulene
> kadar pid dosyasini silememeli - duzenleyememeli ve deamon surec
> oldugunda kilit cekirdek tarafindan kaldirilmali.
> tabi bunlar benim saf temennilerim, linux'ta isler nasil yuruyor bilmiyorum.
>
> pid dosyasi olusturdugum kod asagida. kodu derliyorum. calistiriyorum,
> pid dosyam olusuyor. baska bir terminalden digeri calisirken tekrar
> calistiriyorum yine calisiyor.
> ve surec henuz sonlanmadan pid dosyasini (kilitli olmasi gereken) silebiliyorum.
>
> pid dosyasi icin deneme yaptigim kod su sekilde;
>
> int main(void){
> int pid_fh;
>
> pid_fh = open("pid", O_WRONLY | O_CREAT, 0640);
> if(pid_fh){
> if(lockf(pid_fh, F_TEST, 0) < 0){
> printf("%s\n", "Sunucunun bir kopyasý zaten çalýþmakta.");
> exit(EXIT_FAILURE);
> }else{
> if(lockf(pid_fh, F_TLOCK, 0) < 0){
> printf("%s\n", "PID dosyasý kilitlenemedi.");
> close(pid_fh);
> exit(EXIT_FAILURE);
> }
>
> sprintf(pid_value, "%d", getpid());
> write(pid_fh, pid_value, strlen(pid_value));
> }
> }else{
> printf("%s\n", "PID dosyasý yazýlamadý.");
> exit(EXIT_FAILURE);
> }
>
> sleep(10);
> exit(0);
> }
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama_at_liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
-- Ömer Fadýl USTA http://www.bilisimlab.com/ _______________________________________________ Linux-programlama mailing list Linux-programlama_at_liste.linux.org.tr http://liste.linux.org.tr/mailman/listinfo/linux-programlamaReceived on Mon 23 Jun 2008 - 07:59:41 EEST