간만에 시간을 투자하여 꼼꼼히 보는 책이다.  구입은 KLDP 공동구매를 이용해 한달 전 쯤에 했지만, 3, 4월 어학원을 가지 않음으로 시간이 생겨 이제서야 보고 있다. 간만에 제대로 보는 전공 기술 서적이라 재미있게 잘 보고 있다.

Linux 내부 동작에 대한 부연 설명을 통해, Linux 상에서 System Programming을 할 때 보다 효율적으로 코딩을 할 수 있게 도와 준다. 보통 Linux 상에서 시스템 프로그래밍을 할 때, W. Richard Stevens의 책 들을 주로 참고를 했었다. "UNIX Network Programming", "Advanced Programming in the UNIX environment" 책을 항상 옆에 두고 참고 하였다. 필요할 때에 몇몇 부분을 참고하는 방식이었고, 또한 이 책들에서는 Linux 환경에 대한 내용은 없다.

코딩 하면서 흔하게 자주 사용하는 함수 였지만, 책을 보다 보면 아하! 그래서 그랬구나 하는 것들도 많이 눈에 들어온다. 예를 들면 fgetc() 함수의 return 타입이 int 인 이유 같은 것을 알게 되었다. C에서 문자열은 보통 char 타입으로 사용이 되는데, fgetc() 함수의 결과인 읽은 문자의 return 타입이 int 타입이다. 그 이유는 문자를 읽다가 발생하는 오류 상황에 대한 값을 넘겨 주기 위함이다. char 타입은 0x0 ~ 0xff 까지 이기 때문에, char 타입으로는 그 외 오류 상황을 나타내는 값을 추가적으로 정의 할 수 없다. 그래서 char 타입보다 더 많은 값을 저장할 수 있는 int 타입으로 함수를 정의했다고 한다.

"아는 만큼 보인다"고 하는 말 처럼, 같은 내용을 보더라도 예전에는 눈에 잘 안들어 오던 것들이 눈에 잘 들어 온다. 때로는 몇 년전에는 이해 못 했을 내용도 이해가 되기도 한다. 그러나, 어떤 것들은 알면 알수록 모르는 것들이 꼬리를 물고 나오기도 한다 ㅡ,.ㅡ;;;

여럿이 같이 보면서 얘기를 하고 싶지만, 상황이 그렇지 못해 좀 아쉽다. Linux 기반에서 시스템 프로그래밍을 하는 사람이면 한 번쯤 읽어 보라고 권하고 싶은 책이다.