在正在运行的进程中当前打开文件时,open不会返回错误

时间:2015-10-16 23:53:17

标签: c file error-handling io

这是我的代码。我完全意识到直接执行时会产生无限循环。我做的是编译了这段代码,然后在linux命令行中通过./a.out &执行了两次。程序第一次执行时,运行正常并提供了一个不错的文件句柄。当程序的第一个实例在后台运行并且我在一分钟后执行第二个实例(通过./a.out &)时,返回的文件句柄完全相同。我期望第二个实例的负返回值表示第一个实例正在使用该文件。

如何解决此问题?我不想使用像fopen / fread这样的缓冲文件函数,因为我想制作的文件很小,必须在程序开头之前在代码中发生任何其他事情。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(){
        char* pidf="/testpid.del";
        int lfp=open(pidf,O_WRONLY|O_CREAT|0x700);
        printf("File handle = %d\n",lfp);
        if (lfp ==-1){printf("Can't use PID file: %s\n",pidf);return -1;}
        while(1){
              sleep(1);
        }
        close(lfp);
}

0 个答案:

没有答案