免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2569 | 回复: 13
打印 上一主题 下一主题

关于UNIX下进程控制问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-05 11:36 |只看该作者 |倒序浏览
各位高手:
    我在unix下用C编程。
    我知道进程的ID,但是如何通过程序而得到此进程的状态和运行其程序的名字呢?

    请帮帮忙啊!

论坛徽章:
0
2 [报告]
发表于 2005-04-05 12:35 |只看该作者

关于UNIX下进程控制问题!

根据kill(pid,0)的返回值可以得到进程状态

论坛徽章:
0
3 [报告]
发表于 2005-04-05 12:57 |只看该作者

关于UNIX下进程控制问题!

但是我如何又通过程序能得到此进程的程序名字呢

论坛徽章:
0
4 [报告]
发表于 2005-04-05 12:58 |只看该作者

关于UNIX下进程控制问题!

状态是不可能的,你想如果一个程序可以控制自己作为进程的执行中的状态,那OS岂不很没面子?

程序名字倒是可以得到,argv[0]就是,如果是linux,还可以读/proc/self/exe符号链接得到全路径。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2005-04-05 13:01 |只看该作者

关于UNIX下进程控制问题!

不计效率的话可以popen("ps -ef", "r";

论坛徽章:
0
6 [报告]
发表于 2005-04-05 13:04 |只看该作者

关于UNIX下进程控制问题!

可能是我写的不清晰,具体是这样的:
我在程序中,只是知道另一个程序的PID。
所以,我想通过这个PID而得到另一个程序的名字和其进程的状态。
所以请求帮忙,不知道如何用C在UNIX下实现!
谢谢各位高手!

论坛徽章:
0
7 [报告]
发表于 2005-04-05 13:08 |只看该作者

关于UNIX下进程控制问题!

比如说,它的pid为1212,那就读/proc/1212/status文件,

不过偶很怀疑,因为进程状态的改变是非常迅速的,几乎每个时钟周期都有可能,你现在读了,可能下一个10ms之后就变了。

论坛徽章:
0
8 [报告]
发表于 2005-04-05 13:29 |只看该作者

关于UNIX下进程控制问题!

albcamus :非常感谢你。
     我们是在运行2个同样的程序时候,我想用其中一个程序判断另一个程序是否是那种僵尸进程,或者是通过ctrl+Z给stopped掉了。当然这两个程序分别是通过不同的客户端执行的。
   因为这两个程序都是插数据到数据库的。我只想避免发生冲突(插入一样的内容)。同时也需要他们的并行!
   
   请高手请教!

论坛徽章:
0
9 [报告]
发表于 2005-04-05 13:48 |只看该作者

关于UNIX下进程控制问题!

>;>;因为这两个程序都是插数据到数据库的。我只想避免发生冲突(插入一样的内容)。同时也需要他们的并行!

这样可以采用信号量或者互斥锁来进行同步(注意是“并发”而不是“并行”,concurrent和parallel是不同的)吧,或者数据库的存储过程/事务等(数据库俺除了SQL啥都不懂,这是猜测)。

论坛徽章:
0
10 [报告]
发表于 2005-04-05 13:50 |只看该作者

关于UNIX下进程控制问题!

你既然知道了PID,为什么还要知道程序名?刚才的kill函数可以做到这一点
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP