为什么用ps看不到我的进程?

haoxg 2003-10-21 10:37:23
很简单的程序,如下:

int main()
{
for (int i = 1; i <= 10; i++)
{
int r;

r = fork();
if (r == 0)
{
for (;;) sleep(10);
}
}

sleep(100000);
}


在程序中fork了10个子进程,但是用ps -ef只能看到父进程,子进程都看不到了怎么会这样???
RetHat Linux 9.0
...全文
1080 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kun_bu 2003-10-22
  • 打赏
  • 举报
回复
呵呵,分给我啦,linux9的ps有毛病啦。
robinaliacer 2003-10-22
  • 打赏
  • 举报
回复
ps -aux不一定能看到所有进程,看到的不一定很top出来的一样,可pstree不加printf也可以看到10个fork出来的进程,pstree -p可以看具体进程号。一目了然
robinaliacer 2003-10-22
  • 打赏
  • 举报
回复
ps -aux
haoxg 2003-10-22
  • 打赏
  • 举报
回复
奇怪的是:

int main()
{
for (int i = 1; i <= 10; i++)
{
int r;

r = fork();
if (r == 0)
{
printf("%d,", i); //<<---只加这一行!
for (;;) sleep(10);
}
}

sleep(100000);
}


加了个printf上去,所有进程又都能看到了。
只要把printf去掉,进程又看不到了。:(
daidai_____DD 2003-10-22
  • 打赏
  • 举报
回复
对了你还可以在fork后,加个printf语句来判断你的子进程有没有执行。
daidai_____DD 2003-10-22
  • 打赏
  • 举报
回复
是有点怪,我在7.2下都能看到。
但是9.0下不一定了,我有个程序,有两个线程,在9.0下运行的,从来只能看到一个进程,照例来说,在7.2下面应该能看到3个线程在运行的。
HunterForPig 2003-10-22
  • 打赏
  • 举报
回复
ps -a -l

23,127

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧