إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

lock a file door , who lock file

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • lock a file door , who lock file

    http://programming-fr34ks.net/forum/...?showtopic=325
    مش عارف احطها فين ؟؟ بس اهيت !
    كود بسيط عارف انه موجود في كل الكتب بس حيشرح الموضوع ببساطه
    كود PHP:
    #include<stdio.h>
    #include<unistd.h>
    #include<string.h>
    #include<fcntl.h>

    int main(int argc char **argv)
    {
            if(!
    argv[1])
            {
                    
    printf("filllllllle!\n");
                    
    _exit(0);
            }

            
    int fd;
            
    struct flock lock;


            
    printf("opening\n");
            
    fd open(argv[1] , O_WRONLY);
            
    printf("locking\n");
            
    memset(&lock  sizeof(lock));
            
    lock.l_type F_WRLCK;
            
    fcntl(fd F_SETLKW , &lock);

            
    printf("locked hit enter\n");

            
    getchar();

            
    lock.l_type F_UNLCK;
            
    fcntl(fd F_SETLKW , &lock);
            
    printf("unlocked\n");
            
    close(fd);
            return 
    0;

    قفل ال file مش إلزامي = mandatory يعني مش حتمنع كللل البروسيس من access علي الفيل دوت
    لكن ديت advisory يعني مجرد door زي مانا قلت
    تخيلها انها مجردد باب تقدر منه تدخل الي انت عايزه علي الملف وتوقف الي انت عايزه عن الملف !
    مش حشرح codes حقول كام حاجه كمان اخر يوم بقي :angry_red:
    /proc/locks
    /proc/[pid]/cmdline

    كده تمام يالا باي

    /proc/locks تحتوي علي كل الملفات الي عملت lock علي اي file وتبتقولك النوع مثال
    [email protected]:~/Desktop/linux.programming/flock# ./lock a7a
    opening
    locking
    locked hit enter
    افتح session تاني او shell تاني ومنه اعمل
    [email protected]:~/Desktop/linux.programming/flock# cat /proc/locks
    1: POSIX ADVISORY WRITE 4574 03:08:2098439 0 EOF
    الكوماند بالنتيجه بيقدم نوع ال lock و ايه ال lock r/w ? وال process id الي عملت ال lock
    اول سطر هو اخر عمليه تم تنفيذها
    ناخد ال pid
    4574

    ps 4574
    [email protected]:~/Desktop/linux.programming/flock# ps 4574
    PID TTY STAT TIME COMMAND
    4574 pts/1 S+ 0:00 ./lock fuck
    واديه جابلك ال command
    في طرق كتير تجيب بيها مسار الكوماند بس انا حقول الي تحت ال proc
    cat /proc/4574/cwd
    cwd = command working directory
    جميل نستخدم readlink
    وادي كود يجيبلك path ال command الي عمل ال lock

    كود PHP:
    #include<stdio.h>
    #include<stdlib.h>
    #include<unistd.h>
    #include<stdio.h>

    int main(int argc char **argv)
    {
            
    int     pid;
            
    char    path[BUFSIZ];
            
    char    link[BUFSIZ];
            
    int     z;

            if(!
    argv[1])
            {
                    
    printf("usage %s process_id\n");
                    
    _exit(0);
            }

            
    pid atoi(argv[1]);

            
    sprintf(path ,"/proc/%d/cwd",pid);

            
    printf("Process /proc path %s\n",path);

            
    readlink(path link BUFSIZ);
            
    link[z] = '\x0';
            
    printf("command real address %s\n",link);

            return 
    0;

    [email protected]:~/Desktop/linux.programming/proc# ./get_link 4574
    Process /proc path /proc/4574/cwd
    command real address /root/Desktop/linux.programming/flock
    في خطوه واحده تختصر كل الكلام دوت ب readlink command
    بس يبقي لزمة حط الموضوع في قسم البرمجه ايه !
    toast
    BOOOF , I AM GONE
    Still , you gotta wait for my PRESENT :D
    C programming arabic Tutorial|Programming-fr34ks
يعمل...
X