小魔女 发表于 2015-1-16 16:13:42

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

使用gcc或g++进行编译,使用gdb进行调试;
经由过程文件锁来完成,在程序运转的一入手下手,反省某文件是不是存在,假如存在则申明改程序已在运转了,假如不存在则使用open语句创立该文件,程序加入时封闭并删除此文件。
staticcharfile_lock=/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;/*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是网络管理员的理想选择。

再见西城 发表于 2015-2-15 11:22:58

主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。

柔情似水 发表于 2015-3-4 11:29:02

这也正是有别的OS得以存在的原因,每个系统都有其自身的优点。?

愤怒的大鸟 发表于 2015-3-11 19:04:03

学习Linux半年了~个人认为不会的多在网上找资料网上有很多资料可以搜索到,LS那位说放手去搞。

简单生活 发表于 2015-3-19 09:04:03

了解Linux的网络安全,系统的安全,用户的安全等。安全对于每位用户,管理员来说是非常重要的。

小魔女 发表于 2015-3-27 19:08:39

如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的、最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。
页: [1]
查看完整版本: 来讲讲:在Linux下避免某个程序被运转两次的办法