ps 커맨드의 구현 차이 (Linux, FreeBSD)

|

각 시스템(Linux, FreeBSD, Solaris, 등등)에서 공통으로 쓸 수 있는 정규화된 ps의 source가 있지 않을까 싶었는데 찾아보고 나니 '그런 것 따윈 없다' 였다. (...)

결론부터 이야기하자면, Process List의 목록을 가져오려면 커널 영역과 직접 연결해야 한다. 이것을 Linux는 libproc 이라는 라이브러리를 통해 사용하고, FreeBSD는 libkvm이라는 라이브러리를 사용한다. libproc은 Linux라는 시스템을 조금이라도 아는 사람이라면 한번쯤은 들어봤던 proc, 그러니까 /proc 경로에 있는 그 어마무시한 놈을 지칭한다. 그러니까 proc File System에서 커널 내용을 읽어 오는 것이고, 요것은 별로 특이할 것은 없겠다. libkvm도 비슷한 동작을 하는 것 같다. /dev/mem 경로의 device를 열어 내용을 읽는 것으로 보인다. (대충 이름만 봐도 짐작이 가는 것처럼, 메모리 자체의 디바이스를 의미하는 것 같다.)



결국 Linux에서 프로세스 리스트를 가져오는 길은 proc을 뒤지는 것 밖에 없는 듯싶다.

And