我是一个C语言的初学者。我有这个assginment来验证一个程序,将找到我可以打开的进程的最大数量。
我得到了这个代码:
int main() {
while (1){
pid_t pid = fork();
if(pid) {
if ( pid == -1){
fprintf(stderr,"Can't fork,error %d\n",errno);
exit(EXIT_FAILURE);
}else{
int status;
alarm(30);
if(waitpid(pid, &status, 0)==pid) {
alarm(0);
// the child process complete within 30 seconds
printf("Waiting.");
}else {
alarm(0);
// the child process does not complete within 30 seconds
printf("killed");
kill(pid, SIGTERM);
}
}
}
else{
alarm(30);
printf("child");
}
}
}
问题是这个程序导致我的笔记本电脑崩溃..:-|
我假设当程序无法打开更多进程时,我将从fork()获得-1,然后退出程序。好吧,它没有发生。
知道吗,我错过了什么
谢谢你,谢谢
2条答案
按热度按时间gkn4icbw1#
如果你真的想知道你可以打开多少个进程,你可以使用sysconf调用,查找_SC_CHILD_MAX变量。Check here。
30byixjq2#
你不能“打开”一个进程。你可以“创造”他们。
CHILD_MAX是一个常量,包含可以创建的子进程的最大数量。在 unistd.h header中定义。要查询,请使用
sysconf
函数。将CHILD_MAX
参数传递给前缀为_SC_
的sysconf
。