У меня есть fork & есть проблема, если 1 ветвь выходит, остальные остаются без изменений.
Под «бродячим», я имею в виду, что я вернулся в bash. & может вводить системные команды, но сервер постоянно выводит поверх моего курсора. Код, используемый для работы, убивая обе ветви, если я ^c. Поскольку добавление сокетов в микс, отключение клиента заставило сервер заблудиться.C Fork Stray Process
У кого-нибудь есть идеи, почему?
В моей основной():
printf("\n Server Running Press ^c to quit\n\n");
if (!fork()) { // Debug output
while (1) {
// Do output stuff until ^c signal
fflush(stdout);
}
} else { // Internets
while (1) {
clfd=accept(listenfd, (struct sockaddr*)&claddr, &claddrlen);
if (!fork()) { // Listener
close(clfd);
} else { // Communication branch
num=rand()%16;
//i=recv(clfd, &num, sizeof(num), 0);
send(clfd, &num, 1, 0);
close(clfd);
exit(0);
}
}
exit(0);
}
return 0;
Это от пс:
PID TTY TIME CMD
11159 pts/8 00:00:00 sv_run
11899 pts/8 00:00:00 sv_run
11987 pts/8 00:00:00 ps
21687 pts/8 00:00:01 bash
Это является частью pstree:
|-sshd---sshd---csh
|-sshd---bash---top
|-2*[sv_run]
|-8*[trashapplet]
|-udevd---udevd
Можете ли вы показать вывод команды 'pstree'? – cyphar
Я не знаю, что сервер больше не находится в фокусе, или клиенты заставляют сервер заблуждаться, но код не имеет большого смысла. Трудно сказать, слишком ли вы оставили слишком много в сокращении кода или если вы страдаете от некоторых недоразумений. – Duck
Не был уверен, что было уместно вставить. – RandomClown