仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 884|回复: 8
打印 上一主题 下一主题

[其他Linux] 来讲讲:在Linux下避免某个程序被运转两次的办法

[复制链接]
小魔女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 16:13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
使用gcc或g++进行编译,使用gdb进行调试;
经由过程文件锁来完成,在程序运转的一入手下手,反省某文件是不是存在,假如存在则申明改程序已在运转了,假如不存在则使用open语句创立该文件,程序加入时封闭并删除此文件。
staticcharfile_lock[sizeof(ctl_addr.sun_path)]=/var/run/file.pid;
  staticboolfile_lock_created=FALSE;
  
  staticint
  create_lock(void)
  {
  intfd=open(file_lock,O_WRONLY|O_CREAT|O_EXCL|O_TRUNC,
  S_IRUSR|S_IRGRP|S_IROTH);
  
  if(fd<0)
  {
  if(errno==EEXIST)
  {
  fprintf(stderr,"file:lockfile"%s"alreadyexists
",file_lock);
  exit_file(10);
  }
  else
  {
  fprintf(stderr,"file:unabletocreatelockfile"%s"(%d%s)
"
  ,file_lock,errno,strerror(errno));
  exit_file(1);
  }
  }
  file_lock_created=TRUE;
  returnfd;
  }
  
  staticbool
  fill_lock(intlockfd)
  {
  charbuf[30];/*holds"
"*/
  pid_tpid;
  intlen;
  
  pid=getpid();
  len=snprintf(buf,sizeof(buf),"%u
",(unsignedint)pid);
  boolok=len>0&&write(lockfd,buf,len)==len;
  
  close(lockfd);
  returnok;
  }
  
  staticvoid
  delete_lock(void)
  {
  if(file_lock_created)
  {
  //delete_ctl_socket();
  unlink(file_lock);/*isnotingfailureuseful?*/
  }
  }
</p>
由于在linux中,用户权限很大,做任何事情都很自由,所以,你往往需要知道你做的每一步在干什么。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-17 15:09:01 | 只看该作者
我学习Linux的心得体会,希望对大家的学习有所帮助,由于水平有限,本文难免有所欠缺,望请指正。
透明 该用户已被删除
板凳
发表于 2015-1-29 19:35:39 | 只看该作者
随着IT从业人员越来越多,理论上会有更多的人使用Linux,可以肯定,Linux在以后这多时间不会消失。
莫相离 该用户已被删除
地板
发表于 2015-2-6 03:38:42 | 只看该作者
目前全球有超过一百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,RedhatLinux和DebianLinux是网络管理员的理想选择。
再见西城 该用户已被删除
5#
发表于 2015-2-15 11:22:58 | 只看该作者
主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。
柔情似水 该用户已被删除
6#
发表于 2015-3-4 11:29:02 | 只看该作者
这也正是有别的OS得以存在的原因,每个系统都有其自身的优点。?
愤怒的大鸟 该用户已被删除
7#
发表于 2015-3-11 19:04:03 | 只看该作者
学习Linux半年了~个人认为不会的多在网上找资料网上有很多资料可以搜索到,LS那位说放手去搞。
简单生活 该用户已被删除
8#
发表于 2015-3-19 09:04:03 | 只看该作者
了解Linux的网络安全,系统的安全,用户的安全等。安全对于每位用户,管理员来说是非常重要的。
小魔女 该用户已被删除
9#
 楼主| 发表于 2015-3-27 19:08:39 | 只看该作者
如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的、最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 23:51

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表