来讲讲:在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中,用户权限很大,做任何事情都很自由,所以,你往往需要知道你做的每一步在干什么。 我学习Linux的心得体会,希望对大家的学习有所帮助,由于水平有限,本文难免有所欠缺,望请指正。 随着IT从业人员越来越多,理论上会有更多的人使用Linux,可以肯定,Linux在以后这多时间不会消失。 目前全球有超过一百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,RedhatLinux和DebianLinux是网络管理员的理想选择。 主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。 这也正是有别的OS得以存在的原因,每个系统都有其自身的优点。? 学习Linux半年了~个人认为不会的多在网上找资料网上有很多资料可以搜索到,LS那位说放手去搞。 了解Linux的网络安全,系统的安全,用户的安全等。安全对于每位用户,管理员来说是非常重要的。 如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的、最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。
页:
[1]