LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1732|回复: 16

在Linux中程序如何感知某个程序正在运行呢?还有禁止自己重载?

[复制链接]
发表于 2003-4-30 10:30:32 | 显示全部楼层 |阅读模式
在Linux中程序如何感知某个程序正在运行呢?还有禁止自己重载?
我有一个想让它运行时能检测一下,如果有某个指定的
程序正在运行,则本程序退出呢?

另外:LINUX中的程序不想让其同时运行多个副本,我应如何作呢?

多谢!
发表于 2003-4-30 11:52:00 | 显示全部楼层
自己写的程序用信号量。
发表于 2003-4-30 11:55:28 | 显示全部楼层
什么叫信号量?(在WIN底下好象没听说过)
发表于 2003-4-30 14:57:49 | 显示全部楼层

windows下也有信号量

t
发表于 2003-5-2 02:19:01 | 显示全部楼层
简单一点,程序启动后,在固定的地点创建一个文件。下次相同的程序发现该文件已经存在,就知道自己不是第一个实例,退出。
 楼主| 发表于 2003-5-2 15:50:40 | 显示全部楼层
我现在的防重载就是一运行就创建个文件,但是问题太多,只有正常
退出程序时,删除了这个文件才行,否则问题多多啊!
比如:被按reset键,机器掉电,用root户头强行重启系统。。。
一但这个文件就没有被删除,程序就再也运行不起来的;
还有这个创建的文件的权限问题等等,防重载一定不要用文件作
标志啊!所以想问一下高手,还有没有其它方法。。。
发表于 2003-5-2 19:51:42 | 显示全部楼层
可以这样来处理:在创建的文件中写入进程的ID,如果机器非正常退出,重启后先读取这个文件,得到进程ID,再根据ID判定进程是否正在运行,如果不是,则把文件删除掉。这样就不会发生不删除文件,程序运行不起来的问题了。
如果不想这样,还可以搜索/proc目录,看看有没有相同的程序在运行。
 楼主| 发表于 2003-5-4 22:53:15 | 显示全部楼层
/proc是什么呢?
发表于 2003-5-5 22:20:57 | 显示全部楼层
/proc是一个目录,实际上是内存映象。
 楼主| 发表于 2003-5-6 09:33:05 | 显示全部楼层
我用
find /proc -name test
并不能找出已经运行的test程序啊!但进入/proc/12345目录
用ll却可以看到?
另外:在LINUX下如何禁止程序的重载呢?多谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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