仓酷云
标题:
来讲讲:在Linux下避免某个程序被运转两次的办法
[打印本页]
作者:
小魔女
时间:
2015-1-16 16:13
标题:
来讲讲:在Linux下避免某个程序被运转两次的办法
使用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
我学习Linux的心得体会,希望对大家的学习有所帮助,由于水平有限,本文难免有所欠缺,望请指正。
作者:
透明
时间:
2015-1-29 19:35
随着IT从业人员越来越多,理论上会有更多的人使用Linux,可以肯定,Linux在以后这多时间不会消失。
作者:
莫相离
时间:
2015-2-6 03:38
目前全球有超过一百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,RedhatLinux和DebianLinux是网络管理员的理想选择。
作者:
再见西城
时间:
2015-2-15 11:22
主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。
作者:
柔情似水
时间:
2015-3-4 11:29
这也正是有别的OS得以存在的原因,每个系统都有其自身的优点。?
作者:
愤怒的大鸟
时间:
2015-3-11 19:04
学习Linux半年了~个人认为不会的多在网上找资料网上有很多资料可以搜索到,LS那位说放手去搞。
作者:
简单生活
时间:
2015-3-19 09:04
了解Linux的网络安全,系统的安全,用户的安全等。安全对于每位用户,管理员来说是非常重要的。
作者:
小魔女
时间:
2015-3-27 19:08
如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的、最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。
欢迎光临 仓酷云 (http://www.ckuyun.com/)
Powered by Discuz! X3.2