当前位置: 技术问答>linux和unix
这个程序为什么会死循环?(附源代码)
来源: 互联网 发布时间:2015-11-15
本文导语: #include int main() { int t; unsigned sum=0; while( t=fork()!=-1){ printf("pid=%d ", getpid()); sum++; } if(t==-1){ perror("fork"); printf("sum=%d", sum); } exit(0); } ...
#include
int main()
{
int t;
unsigned sum=0;
while( t=fork()!=-1){
printf("pid=%d ", getpid());
sum++;
}
if(t==-1){
perror("fork");
printf("sum=%d", sum);
}
exit(0);
}
我想让它算出系统最大还能支持开多少个进程,虽然没什么实际意义,但这个程序的结果并不理想!
它为什么会死循环???
int main()
{
int t;
unsigned sum=0;
while( t=fork()!=-1){
printf("pid=%d ", getpid());
sum++;
}
if(t==-1){
perror("fork");
printf("sum=%d", sum);
}
exit(0);
}
我想让它算出系统最大还能支持开多少个进程,虽然没什么实际意义,但这个程序的结果并不理想!
它为什么会死循环???
|
在while里面加个定时器sleep(1);
|
应该是系统死了!程序好像在做细胞分裂,fork后父,子进程都会继续fork,很快系统的资源就会耗光了吧!
|
进程是指数级增加呀。因为子进程又会分裂,所以你理论得到的结果是死机的时候所有这个程序fork和来的所有程序和本身这个程序打印出来数目的总和。麻烦。换个算法或者方法吧。
|
while( t=fork()!=-1){
应该是
while( (t=fork()) !=-1){
=的优先级最低。
应该是
while( (t=fork()) !=-1){
=的优先级最低。