accept()関数をインターセプトするLD_PRELOADを作成しました。時々accept関数が同じファイル記述子を与えるので、私は問題を抱えています。このプリロードを1つのプロセスに対してのみロードします
私のコード:
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
{
int fd;
fd = (*realAccept)(sockfd, addr, addrlen);
if(fd >= 0)
{
printf("file descriptor: %d\n", fd);
...
return fd;
}
}
int close(int fd)
{
printf("close decriptor: %d\n", fd);
return (*realClose)(fd);
}
出力は次のとおりです。
ファイル記述子:213
ファイル記述子:213 <-なぜですか?
..。
記述子を閉じる:213
なぜaccept関数は同じファイル記述子を返すのですか?
ありがとう!