FDs

기본적으로 FD를 여러 개 저장할 때 효율적으로 저장하기 위해 비트연산을 사용한다.

만약 0, 1, 2, 3, 4, 5, 6, 7 총 8개의 fd가 있다고 가정하자.

이를 8개의 각기다른 int형 변수에 담는다면

총 차지하는 메모리 공간은 (4 byte * 8) = 32 byte가 된다.

이는 쓸데없이 많은 메모리 공간을 차지하게 한다.

fd의 경우 중복된 값이 없고 정수이기 때문에 비트단위로 저장하는 것이 가능하다.

즉, 다음과 같이 정리할 수 있다.

0 → 1 << 0

1 → 1 << 1

2 → 1 << 2

3 → 1 << 3

4 → 1 << 4

5 → 1 << 5

6 → 1 << 6

7 → 1 << 7

만약 fd를 1, 3, 5를 저장한다고 가정하면 다음과 같이 값이 들어간다.

00101010