私はCの完全な初心者です。私は、開くことができるプロセスの最大数を見つけるプログラムを作成するためのこのアサインメントを持っています。
私はこのコードを出します:
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を取得して、プログラムを終了すると想定しました。まあ、それは起こりませんでした。
何か案が?ここで何が欠けていますか?
ありがとう!