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
7 个解决方案
#1
是有点怪,我在7.2下都能看到。
但是9.0下不一定了,我有个程序,有两个线程,在9.0下运行的,从来只能看到一个进程,照例来说,在7.2下面应该能看到3个线程在运行的。
但是9.0下不一定了,我有个程序,有两个线程,在9.0下运行的,从来只能看到一个进程,照例来说,在7.2下面应该能看到3个线程在运行的。
#2
对了你还可以在fork后,加个printf语句来判断你的子进程有没有执行。
#3
奇怪的是:
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去掉,进程又看不到了。:(
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去掉,进程又看不到了。:(
#4
ps -aux
#5
ps -aux不一定能看到所有进程,看到的不一定很top出来的一样,可pstree不加printf也可以看到10个fork出来的进程,pstree -p可以看具体进程号。一目了然
#6
呵呵,分给我啦,linux9的ps有毛病啦。
#7
ps -a -l
#1
是有点怪,我在7.2下都能看到。
但是9.0下不一定了,我有个程序,有两个线程,在9.0下运行的,从来只能看到一个进程,照例来说,在7.2下面应该能看到3个线程在运行的。
但是9.0下不一定了,我有个程序,有两个线程,在9.0下运行的,从来只能看到一个进程,照例来说,在7.2下面应该能看到3个线程在运行的。
#2
对了你还可以在fork后,加个printf语句来判断你的子进程有没有执行。
#3
奇怪的是:
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去掉,进程又看不到了。:(
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去掉,进程又看不到了。:(
#4
ps -aux
#5
ps -aux不一定能看到所有进程,看到的不一定很top出来的一样,可pstree不加printf也可以看到10个fork出来的进程,pstree -p可以看具体进程号。一目了然
#6
呵呵,分给我啦,linux9的ps有毛病啦。
#7
ps -a -l