#include <stdio.h>
#include <stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include <fcntl.h>
int main(void)
{
int fd1=0,fd2=0
int output
output=open("/root/647.txt", O_CREAT|O_WRONLY, S_IRUSR|S_IWUSR)
if( (fd1=fork() )==0)
{
lockf(output, 1, 0)
write(output,"fd1\n",4)
sleep(2)
write(output,"fd1\n",4)
lockf(output, 0, 0)
}
else if( (fd2=fork() )==0)
{
lockf(output, 1, 0)
write(output,"fd2\n",4)
sleep(2)
write(output,"fd2\n",4)
lockf(output, 0, 0)
}
else
{
lockf(output, 1, 0)
write(output,"fd\n",3)
sleep(2)
write(output,"fd\n",3)
lockf(output, 0, 0)
}
return 0
}
结果为
fd
fd
fd2
fd2
fd1
fd1
这个应该是个同步 *** 作的问题!首先按照正常情况下,这个文件需要上锁,一个文件锁,第一个使用这个文件的进行对这个文件上锁,上了锁之后,其他进程不能对这个文件进行 *** 作,他们要等待这个锁被释放之后再可以对这个文件 *** 作!如果不对这个文件上锁的话,那么每个进程对这个文件 *** 作之后可能得不到想要的结果,唯一一种情况除外,那就是每个进程都是对这个文件进行读 *** 作!欢迎分享,转载请注明来源:内存溢出
评论列表(0条)