open带上o_create和o_execl,如果打开文件时,文件存在则返回错误。
这种做法比较简单。

#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>

int main(void)
{
    int fd;

    while((fd = open("/tmp/hello.lock", o_creat | o_excl)) < 0){
        printf("file exist\n");
        sleep(1);
        continue;
    }
    close(fd);

    sleep(6);

    unlink("/tmp/hello.lock");
}