QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 851|回复: 7

两个有关进程的问题……

[复制链接]
发表于 2004-5-11 14:46:05 | 显示全部楼层 |阅读模式
1、用system(const char*)(stdlib.h)调用的子进程如何得到其PID?(要用KILL)

2、一般来说用getrusage(sys/resource.h)得到的idrss+isrss是否就是该进程占用的非代码内存?
发表于 2004-5-12 19:11:43 | 显示全部楼层
第一个pid的返回值就是他的进程号,
第二个不会!
回复

使用道具 举报

 楼主| 发表于 2004-5-13 16:30:33 | 显示全部楼层
大哥有没搞错?System的返回值是执行成功与否啊!
第二个吗……那应该是什么?
回复

使用道具 举报

发表于 2004-5-14 20:52:51 | 显示全部楼层
system是一个例程,从书apue里看,在这个子功能里会产生一个子进程,子进程才是真正的要执行的程序,父进程等待这个子进程返回,也就是说在system里有两个进程,一个是要执行的命令,另一个就是主程序本身(如果system不是由fork来的)我还没发现可以用什么办法得到这个子进程的id,因为在system里对子进程的状态进行了检测,似乎你不用自己kill它。system不返回,你的程序就阻塞了,如何kill它?所以我想如果你要kill它,就应该fork一个system,再kill这个fork 的id。楼主觉得如何?

如果不对再探讨探讨。
回复

使用道具 举报

 楼主| 发表于 2004-5-18 10:27:18 | 显示全部楼层
fork一个system?那子进程ID还是在第一次调用的system手里。再说难道用fork()之后在exec?那怎么区分父子?两个都盖掉了也就没法实现作用了。
回复

使用道具 举报

发表于 2004-5-18 10:44:36 | 显示全部楼层
fork后在子进程中exec(其id不变),这时你有这个子进程的id,你可以kill这个id?我觉得system不适合用在你的这种情况下。
回复

使用道具 举报

 楼主| 发表于 2004-6-1 22:02:26 | 显示全部楼层
怎么区分父子?
回复

使用道具 举报

发表于 2004-6-1 22:42:29 | 显示全部楼层
看来你看书不仔细哦。
父进程返回子进程的pid,子进程返回0.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 05:41 , Processed in 0.039770 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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