社区
Linux/Unix社区
帖子详情
过年送分,外加一个文件读写问题????????
bekars
2005-02-06 04:17:23
如何在Linux中得知一个文件是否被打开了,编程如何保证一个文件只被一个程序打开,就是非共享打开文件,过年送分了!
...全文
120
9
打赏
收藏
过年送分,外加一个文件读写问题????????
如何在Linux中得知一个文件是否被打开了,编程如何保证一个文件只被一个程序打开,就是非共享打开文件,过年送分了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
limlzm
2005-02-08
打赏
举报
回复
新年快乐
nodummy
2005-02-08
打赏
举报
回复
不要用flock,上次用了一下,好像有副作用……
一般都用fcntl来做这个东西的……
sharkhuang
2005-02-07
打赏
举报
回复
应该就这个方法吧!还有其他的?
winter_sui
2005-02-07
打赏
举报
回复
用文件所比较好。
fopen函数虽然功能是打开一个文件,但其实他什么也没做,只是为进程找到文件,然后把文件的一些必要信息存在内核里。他根本不能不能锁定文件,如果再来个进程打开他也是没有问题的,而且读写都互不影响。
解决的方法就是用flock来锁定文件。简单的例子如下:
fp=open("filename","w"); //不要用fopen打开,flock需要的是用open低级打开的文件
flock(fp,LOCK_EX); //LOCK_SH, LOCK_EX, 两种锁的方式
...这时肯定是你自己打开了,作相应的处理吧。
flock(fp,LOCK_UN); //记得用完后要开锁。
honlyn
2005-02-07
打赏
举报
回复
顶
9653013
2005-02-07
打赏
举报
回复
int test_lock( int fd )
{
struct flock flockbuf;
flockbuf.l_type = F_WRLCK;
flockbuf.l_start = 0;
flockbuf.l_whence = SEEK_SET;
flockbuf.l_len = 0;
if( fcntl( fd, F_GETLK,&flockbuf ) <0 )
{
printf("can not lock %s %s\n",LOCK_FILE,strerror(errno));
exit(-1);
}
/*no lock */
if( flockbuf.l_type == F_UNLCK )
return 0;
return( flockbuf.l_pid );
}
void lock_file( int fd )
{
struct flock flockbuf;
flockbuf.l_type = F_WRLCK;
flockbuf.l_start = 0;
flockbuf.l_whence = SEEK_SET;
flockbuf.l_len = 0;
if( fcntl( fd, F_SETLK,&flockbuf ) <0 )
{
printf("can not lock %s %s\n",LOCK_FILE,strerror(errno));
exit(-1);
}
}
void judge_lock()
{
int fd;
struct stat statbuf;
if( lstat( LOCK_FILE,&statbuf ) <0 )
{
fd = open( LOCK_FILE,O_CREAT|O_TRUNC|O_RDWR,0600 );
if( fd < 0 )
{
printf("can not creat %s %s\n",LOCK_FILE,strerror(errno)
);
exit(-1);
}
lock_file( fd );
}
else
{
fd = open( LOCK_FILE,O_RDWR,0600 );
if( fd < 0 )
{
printf("can not creat %s %s\n",LOCK_FILE,strerror(errno)
);
exit(-1);
}
int ret = test_lock( fd );
/* tasker is not running*/
if( ret == 0 )
lock_file( fd );
else
{
printf("tasker is running\n");
exit(-1);
}
}
return;
}
tengulre
2005-02-06
打赏
举报
回复
我个人觉得写程序pid方法较佳
bekars
2005-02-06
打赏
举报
回复
用文件锁
如何用???
quil
2005-02-06
打赏
举报
回复
用文件锁
基于pytorch+ResNet50的眼部疾病图片分类源码+文档说明.zip
详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;
基于yolov5的鸟窝目标检测源码+模型.zip
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明
中南财经政法大学-答辩PPT模板我给母校送模板作品.pptx
PPT模板,答辩PPT模板,毕业答辩,学术汇报,母校模板,我给母校送模板作品,周会汇报,开题答辩,教育主题模板下载。PPT素材下载。
node-v8.7.0-sunos-x64.tar.gz
Node.js,简称Node,是
一个
开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
2024-2030全球与中国混合光纤同轴网络市场现状及未来发展趋势.docx
2024-2030全球与中国混合光纤同轴网络市场现状及未来发展趋势
Linux/Unix社区
23,120
社区成员
74,507
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章