0
私は、2つのポートを傍受し、着信データで何かをするサーバーを作ろうとしています。私はfork()
を使ってこれをやりたい私がしようとしている:これも、子プロセスでinhere
文字列を出力しませんCフォークがうまくいかない
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);
}
}
...
。私は間違って何をしていますか?
(p == 0)は、子プロセスではありません(p> 0)。 –
'" inhere "の最後に改行がないので、標準ライブラリの出力行バッファにそれをトラップすることが私の最初の推測です。なぜそこに別の 'fork()'呼び出しがあるのか分かりません。 – unwind
私の「スリープ」のマンページによると、パラメータはスリープする秒数です。 'sleep(1000000000000000);'はあなたが意図したより少し長くスリープするかもしれません。 – Gerhardh