免费注册 查看新帖 |

Chinaunix

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

请教:如何根据进程名获得进程ID [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-18 14:47 |只看该作者 |倒序浏览
unix 下C编程。如何在A程序中获得进程B的进程ID;

论坛徽章:
0
2 [报告]
发表于 2007-05-18 14:58 |只看该作者
我是菜鸟,我不会,不过可以在c程序里调用shell. ps  加 grep b的name,哈
哈哈,这招够菜吧..........

论坛徽章:
0
3 [报告]
发表于 2007-05-18 15:03 |只看该作者
pidof name

论坛徽章:
0
4 [报告]
发表于 2007-05-18 15:05 |只看该作者
如果是Linux,你可以遍歷/Proc目錄下的文件,呵呵。
或者你可以讀取Kernel內存?
沒有一個是簡單的。

可能執行一次外部命令ps算是比較簡單了,其實這都是沒事找事型的。

论坛徽章:
0
5 [报告]
发表于 2007-05-18 15:11 |只看该作者
原帖由 福瑞哈哥 于 2007-5-18 15:05 发表
如果是Linux,你可以遍歷/Proc目錄下的文件,呵呵。
或者你可以讀取Kernel內存?
沒有一個是簡單的。

可能執行一次外部命令ps算是比較簡單了,其實這都是沒事找事型的。



怎么会是没事找事,如果你按顺序执行一系列进程,如果一个进程不能按时退出,守护进程要将其杀掉啊。我用的是alpha 机器。

论坛徽章:
0
6 [报告]
发表于 2007-05-18 15:19 |只看该作者
原帖由 zergzb 于 2007-5-18 15:11 发表



怎么会是没事找事,如果你按顺序执行一系列进程,如果一个进程不能按时退出,守护进程要将其杀掉啊。我用的是alpha 机器。



进程都是你自己fork的嘛?
如果不是, 怎么判断某个进程是不是按时退出呢

论坛徽章:
0
7 [报告]
发表于 2007-05-18 15:40 |只看该作者

回复 6楼 Edengundam 的帖子

我用system(cmd)来按顺序执行。

论坛徽章:
0
8 [报告]
发表于 2007-05-18 17:09 |只看该作者
you can find your PID from /var/run/

论坛徽章:
0
9 [报告]
发表于 2007-05-18 17:16 |只看该作者
原帖由 zhjufe 于 2007-5-18 17:09 发表
you can find your PID from /var/run/



不知道调用system时候有没有指定后台执行, 还是阻塞方式, 等待system调用结束.
如果使用后台执行, 那么会导致fork一个shell去fork命令, 这样shell一退出, 命令就变成孤儿被init接管了. 这样就不行了.

如果system直接调用, 被阻塞住了, 那么可以考虑设置alram信号, 然后信号处理程序里面去找, 发送信号.

不过我觉得自己去fork比较好些....^^

[ 本帖最后由 Edengundam 于 2007-5-18 17:20 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2007-05-18 17:30 |只看该作者
原帖由 zergzb 于 2007-5-18 15:40 发表
我用system(cmd)来按顺序执行。

你这种需求不适合用 system。
应该用 fork + exec
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP