¿­¸°ÆÄÀÏ¿¡ ´ëÇÑ ±Ç°íÀá±ÝÀ» ¸¸µé°Å³ª Á¦°ÅÇÑ´Ù.
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=flock">flock</a>(2)

1장. flock(2)

차례
1.1절. »ç¿ë¹ý
1.2절. ¼³¸í
1.3절. ¹Ýȯ°ª
1.4절. ¿¡·¯
1.5절. ¿¹Á¦

¿­·ÁÁø ÆÄÀÏ¿¡ ´ëÇÏ¿© ±Ç°íÀá±ÝÀ» °É°Å³ª ÇØÁ¦ÇÑ´Ù.


1.1절. »ç¿ë¹ý

#include <sys/file.h>

int flock(int fd, int operation)
		


1.2절. ¼³¸í

¿­·ÁÁø ÆÄÀÏfd¿¡ ±Ç°í Àá±ÝÀ» Àû¿ëÇϰųª Á¦°ÅÇÑ´Ù. operationÀº Àá±Ý°ú °ü·ÃµÈ ¿¬»êÀ¸·Î ´ÙÀ½°ú °°Àº Á¾·ùÀÇ ¿¬»êÀ» Áö¿øÇÑ´Ù.

LOCK_SH

°øÀ¯Àá±Ý. ÇѰ³ ÀÌ»óÀÇ ÇÁ·Î¼¼½ºµéÀÌ ÁÖ¾îÁø ½Ã°£¿¡ ÆÄÀÏ¿¡ ´ëÇÑ °øÀ¯ Àá±ÝÀ» Çϵµ·Ï ÇÑ´Ù.

LOCK_EX

¹èŸ(exclusive)Àá±Ý. ÁÖ¾îÁø ½Ã°£¿¡ ´ÜÁö ÇϳªÀÇ ÇÁ·Î¼¼½º¸¸ ÆÄÀÏ¿¡ ´ëÇÏ¿© Àá±ÝÀ» ¾òÀ» ¼ö ÀÖµµ·Ï ÇÑ´Ù.

LOCK_UN

Àá±Ý ÇØÁ¦

LOCK_NB

Àá±ÝÀÏ ¶§ ºí·°ÇÏÁö ¾Ê°í ¹Ù·Î ¸®ÅϵȴÙ. ´Ù¸¥ ¿¬»ê°ú orÇÒ ¼ö ÀÖ´Ù.

ÇÑ ÆÄÀÏ¿¡ ´ëÇØ¼­ °øÀ¯Àá±Ý°ú ¹èŸÀá±ÝÀ» µ¿½Ã¿¡ ÇÒ ¼ö´Â ¾ø´Ù. Àá±ÝÀº ÆÄÀÏ ±â¼úÀÚ°¡ ¾Æ´Ñ inode¿¡ ´ëÇØ¼­ ÀϾ°Ô µÈ´Ù. ±×·¡¼­ dup¿Í fork´Â Áߺ¹µÈ Àá±ÝÀ» ¸¸µé¾î ³»Áö ¾Ê´Â´Ù.


1.3절. ¹Ýȯ°ª

¼º°ø½Ã 0ÀÌ ¸®ÅϵȴÙ. ¿¡·¯½Ã -1ÀÌ ¸®ÅϵȴÙ.


1.4절. ¿¡·¯

EWOULDBLOCK

ÆÄÀÏÀÌ Àá°Ü ÀÖ°í LOCK_NBÇ÷¡±×°¡ ¼±ÅõǾî ÀÖÀ» °æ¿ì


1.5절. ¿¹Á¦

#include <unistd.h>
#include <stdlib.h>
#include <sys/file.h>
#include <sys/types.h>
#include <sys/stat.h>

int main(int argc, char **argv)
{
    int fd;
    int id;
    int i;
    char *file_name = "lock.file";

    id = atoi(argv[1]);
    fd = open(file_name, O_RDONLY);
    sleep(1);
    if (flock(fd, LOCK_EX) != 0)
    {
        printf("flock error\n");
        exit(0);
    }

    for (i =0; i < 5; i++)
    {
        printf("OK File FD %d : %d\n", id,i);
        sleep(1);
    }
    if (flock(fd, LOCK_UN) != 0)
    {
        printf("filue un lock error\n");
    }
    close(fd);
}
		

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.