fd
-
프로세스가 fork 되면IT/Linux C 2012. 1. 22.
프로세스 fork가 일어나게 되면, 프로세스가 가지고 있는 명령어 셋과 fd(file descriptor)들은 그대로 함께 복제 되어 진다.\ 또한, 부모 프로세스가 가지고 있던 memory lock, mutex, timer등은 복제되지 않는다. 이러한 이야기를 하게 되는 이유는 최근 서버 클라이언트의 통신 구조에서 클라이언트가 재 시작되는데, 서버에서는 해당 클라이언트가 연결 종료됨을 인지 못하는 문제점에 만난적이 있다. 문제의 원인을 파악하기 위하여 검증을 해보다가 어느 순간에만 연결 종료를 인지하지 못하게 되었다. 클라이언트 프로그램에서 exec 함수를 호출할 때(exec함수는 내부적으로 fork를 합니다) 해당 문제점이 발생하였다. 문제의 원인으로 fork를 통해서 socket을 가리키는 파일 디..
-
프로세스가 열고 있는 파일을 확인하는 방법 - lsofIT/DevOps 2012. 1. 5.
linux 시스템에서 프로세스를 통하여 파일을 열 수 있다. 여기서 파일이란 데이터를 담을 수 있는 파일 뿐만 아니라, 통신을 위한 socket, event_poll 등 file descriptor, 라이브러리 파일, char device까지 포함한다. 개발된 프로그램이 소켓을 사용하여 통신하는 경우 실제로 소켓이 열려 있는지 디버깅을 위한 용도, 그리고 프로세스가 열 수 있는 파일의 갯수가 한정되어지기 때문에 시스템 모니터링을 위해서 열려진 파일이 얼마만큼인지 확인하는 용도등으로 파일을 확인하는 방법은 필요하다. 결론부터 말하자면, lsof(list open file)라는 명령어를 통하여 모든 프로세스에 대하여 열고 있는 파일에 대하여 확인할 수 있다. root@ubuntu:~# lsof COMMAND..