Я пытаюсь создать сервер, на котором он слушает 2 порта и что-то делает с входящими данными, при этом распечатывает каждую точку каждую секунду, чтобы люди знали, что она все еще работает. Я хочу сделать это, используя fork()
. Я пытаюсь:C forking не работает
p = fork();
if(p == 0){
if(getsockname(sock1, (struct sockaddr *) &name1, &length1) == -1) {
perror("getting socket name");
exit(3);
}
printf("Socket port #%d\n", ntohs(name1.sin_port));
if(getsockname(sock2, (struct sockaddr *) &name2, &length2) == -1) {
perror("getting socket name");
exit(3);
}
printf("Socket port #%d\n", ntohs(name2.sin_port));
}
else if(p > 0){
printf("inhere"); //
p1 = fork();
if(p1 > 0) {
while(TRUE) {
write(".");
sleep(1);
}
}
...
Это даже не печатать inhere
строки в дочернем процессе. Что я делаю не так?
(p == 0) - дочерний процесс не (p> 0). –
Отсутствие перевода строки в конце '' inhere '', таким образом, захват этого в буфере исходящей строки стандартной библиотеки является моим первым предположением. Не знаю, почему есть другой вызов fork() 'там. – unwind
Согласно моей справочной странице для 'sleep', параметр - это количество секунд для сна. 'sleep (1000000000000000);' может спать немного дольше, чем вы намерены. – Gerhardh