linux C语言的锁机制

linux C语言的锁机制,第1张

你写错了

#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

这个应该是个同步 *** 作的问题!首先按照正常情况下,这个文件需要上锁,一个文件锁,第一个使用这个文件的进行对这个文件上锁,上了锁之后,其他进程不能对这个文件进行 *** 作,他们要等待这个锁被释放之后再可以对这个文件 *** 作!如果不对这个文件上锁的话,那么每个进程对这个文件 *** 作之后可能得不到想要的结果,唯一一种情况除外,那就是每个进程都是对这个文件进行读 *** 作!


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7343022.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存