这是我的代码。我完全意识到直接执行时会产生无限循环。我做的是编译了这段代码,然后在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);
}