社区
Linux/Unix社区
帖子详情
怎么判断我的程序已经运行了?
zly1980
2004-12-10 07:35:27
怎么判断我的程序已经运行了?
int main(int argc,char **argv)
{
if (fork()) exit(0);
if (fork()) exit(0);
setsid();
close(0);
close(1);
close(2);
for(;;)
{;//my code here}
return 0;
}
一个这样的程序,可以后台运行的,就是在终端运行的时候运行了就返回控制给终端的,但是我要程序只运行一次,如果运行了就不再运行了.
...全文
195
7
打赏
收藏
怎么判断我的程序已经运行了?
怎么判断我的程序已经运行了? int main(int argc,char **argv) { if (fork()) exit(0); if (fork()) exit(0); setsid(); close(0); close(1); close(2); for(;;) {;//my code here} return 0; } 一个这样的程序,可以后台运行的,就是在终端运行的时候运行了就返回控制给终端的,但是我要程序只运行一次,如果运行了就不再运行了.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wangjinhu
2004-12-22
打赏
举报
回复
ps -ef|grep your.out
tengulre
2004-12-16
打赏
举报
回复
UP
yunheehust
2004-12-16
打赏
举报
回复
ps -A|grep yourapp
litw
2004-12-16
打赏
举报
回复
最方便的方法,对ps结果作判断
lifeixiao
2004-12-15
打赏
举报
回复
用一个文件来记录启动信息,每次启动去查询这个文件。
pubol
2004-12-15
打赏
举报
回复
转载:
在程序运行的时候,创建一个.pid的文件,然后以非阻塞的方式
对文件上独占锁,只要返回OK,就可以认为OK.
#if 1
FILE * pidfp;
int8 pidstr[80];
pidfp = fopen(".pid","r+");
if( pidfp == NULL )
{
pidfp = fopen(".pid","w");
if( NULL == pidfp )
{
printf("打开文件.pid失败:%s\n",strerror(errno));
return 0;
}
}
if( NULL != pidfp )
{
int retcode;
int fd;
int type;
memset(pidstr,'\0',sizeof(pidstr));
fgets(pidstr,80,pidfp);
pidstr[80-1] = '\0';
rewind(pidfp);
fd = fileno(pidfp);
type = AFC_LOCK_EX | AFC_LOCK_NB;
{
struct flock sLock;
struct stat sStat;
int cmd = 0;
int retcode;
retcode = fstat(fd,&sStat);
...
memset(&sLock,'\0',sizeof(sLock));
sLock.l_type = F_RDLCK;
sLock.l_whence = SEEK_SET;
sLock.l_start = 0;
sLock.l_len = 0;
retcode = fcntl(fd,F_GETLK,&sLock);
if( 0 != retcode )
....
if( (AFC_LOCK_NB & type) == 0 )
cmd = F_SETLKW;
else
cmd = F_SETLK;
while(1)
{
if( (AFC_LOCK_EX & type) != 0 )
{
sLock.l_type = F_WRLCK;
retcode = fcntl(fd,cmd,&sLock);
}
else if( (AFC_LOCK_SH & type) != 0 )
{
sLock.l_type = F_RDLCK ;
retcode = fcntl(fd,cmd,&sLock);
}
if( -1 == retcode )
{
if ( EINTR == errno )
{
errno = 0;
continue;
}
else if( cmd != F_SETLK )
{
WriteLog("fcntl:F_SETLKW失败:%s",strerror(errno) );
break;
}
}
break;
}
}
if( retcode == -1 )
{
printf("进程已经启动了\n");
fprintf(pidfp,"%s",pidstr);
fclose(pidfp);
return 0;
}
fprintf(pidfp,"%d",getpid());
fflush(pidfp);
}
#endif
另外共享内存、判断ps、使用信号量的方法也可以使用试下
linaxing
2004-12-11
打赏
举报
回复
用锁来实现吧,启动的时候查询一下,如果所已经加了就说明程序以及运行了。
Python跑步入门
什么是数据类型 字符串和编码 通过字符串,了解编码知识
判断
和循环 掌握基本的编程结构,
判断
和循环 简单数据结构 list tuple dict set 掌握常用简单的数据结构的基本操作 函数的定义和调用 掌握函数概念、自定义...
c#中怎样
判断
一个
程序
是否正在
运行
?
我写了两个
程序
,其中
程序
2想
判断
程序
1是否正在
运行
(这两个
程序
没有任何联系) 谢谢啊 if(System.Diagnostics.Process.GetProcessesByName("要获取的
程序
在进程中的称").ToList().Count>0) { //存在 } else...
什么叫
程序
运行
?
什么叫
程序
运行
?刘建文(http://blog.csdn.net/keminlau)nakeman联想不断……2009-4-9 20:04:23 b.用电脑多了会有种错觉,以为计算机屏幕上跑了好多不同的
程序
,包括也以为操作系统也一个独立
运行
的
程序
。事实上,...
Python
判断
程序
是否
运行
Python
判断
程序
是否
运行
C# winform
判断
程序
是否
已经
在
运行
判断
程序
是否
已经
打开
C# winform
判断
程序
是否
已经
在
运行
判断
程序
是否
已经
打开
Linux/Unix社区
23,121
社区成员
74,508
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章