ps로 프로세스가 어떤 쓰레드들을 물고 있는지 이 글에 작성했던 적이 있었습니다. 이것을 pstree로 보는 방법을 알아보겠습니다. 테스트용 프로그램은 위와 같습니다. 간단하게 Thread 3개를 생성하고 돌립니다. 쓰레드는 계속 루프를 돌 겁니다. python3 1.py를 입력하면, 프로세스 하나에 Thread 4개가 돌고 있을 겁니다. 메인 쓰레드 하나랑, for loop에서 생성된 쓰레드 3개. ps -aL을 입력해 봅시다. 그러면, PID랑 LWP가 나옵니다. 여기서, LWP는 Light Weight Process의 줄임말입니다. 경량 프로세스, 즉 쓰레드라는 것입니다. 쭉 내려보시면, python3이라는 것이 보입니다. PID가 57273이고, LWP가 57273, 57274, 57275, 57..
프로세스 검색 결과
특정 포트를 수신 포트로 쓰고 있는 process를 종료하고 싶습니다. linux에서는 lsof라던지 ps 같은 것으로 꽤 편하게 할 수 있었습니다. 윈도우에서는 방법이 없을까요? 먼저, django 서버를 켜 보겠습니다. 이것은 8000번 포트를 씁니다. 우리는 특정 포트를 쓰는 프로세스를 알고 싶은데요. 작업 관리자 창을 열어보겠습니다. 성능 탭을 보시면 리소스 모니터 열기가 있습니다. 한 번 열어 보겠습니다. 작업 관리자 창보다는 조금 더 상세한 내용을 볼 수 있습니다. 탭을 보니까, 개요, CPU, 메모리, 디스크, 네트워크가 있습니다. 이 중, 네트워크를 클릭해 보겠습니다. 보면, 이 탭은 네트워크 활동에 관련된 정보를 보여주는 모양입니다. 이 중, 수신 대기 포트 탭을 눌러주겠습니다. PID와..
가희배 코딩테스트 1회에서 나온 7번 문제는 가희와 프로세스 문제의 결과값이 주어졌을 때, 거꾸로 인풋 값을 만들어 보라는 문제였습니다. 항상 가능한 경우만 주었기 때문에 쉬울 거라고 생각했습니다. 그런데, 실제로 대회 때 문제를 푸신 분들은 그리 많지 않았고 골드 1로 평가되는 기염을 토하게 되었습니다. 사실 불가능한 경우까지 출력하라고 했는데, 진짜 그렇게 출제 했다면 100% 플레급으로 뛰었을 거라 생각합니다. 그러면 무엇이 이렇게 어렵게 만들었을까요? 문제에서 설명하는 알고리즘을 단순화 하는 것이 제일 어렵지 않았나 싶습니다. 게다가 실행 결과를 가지고 가능한 입력값을 만들라고 하니 당황할 수 밖에 없었을 겁니다. 사실 제가 맞닥트렸어도 매우 당황했을 겁니다. 일단, 가희와 프로세스의 나온 입력 ..
fopen을 하고 난 뒤에는 fclose를 호출하라고 합니다. 사실, fopen과 fclose는 한 쌍처럼 따라다닌다고 봐도 무난하긴 하겠네요. 만약에, 닫지 않으면 어떤 일이 일어날까요? 저는, 1.txt를 열기만 하고 닫지는 않을 겁니다. fclose.c를 보겠습니다. 1000번 fopen 함수를 수행합니다. 닫는 것을 호출하지 않습니다. 그리고 나서, file open end를 찍고 계속 루프를 돕니다. 이 정도로 해석하시면 될 듯 싶습니다. 이제 코드를 컴파일 해서 실행시켜 보겠습니다. 그리고 다른 터미널에서 fclose에 대한 것을 보면, pid가 4810임을 알 수 있습니다. proc/4810/fd로 가서, ls를 쳐 보겠습니다. 그러면, 꽤 많은 무언가가 출력됨을 알 수 있습니다. 1.txt..
이번 글에서는 간단하게 좀비 프로세스에 대해서 알아보도록 하겠습니다. ps 명령어 사용법도 익히실 겸 겸사겸사. 이것은, 실행이 다 끝났는데, 아직 어딘가에서는, 삭제가 되지 않은, 정보가 남아 있는 프로세스를 의미합니다. 이들을 여러개 생성해 보면서 어떤 일이 일어나는지 보도록 하겠습니다. fork.c 프로그램입니다. 이것을 보면, pid가 -1일 때, while(1) 1번째 LOOP를 빠져 나옵니다. 이 때에는 프로세스를 생성할 수 없을 때일 거고요. fork()를 호출한 경우, 자식 프로세스가 생성이 되는데요. 이 때, 부모인 경우, pid 값이 0이 리턴이 되지 않기 때문에, 계속 while Loop를 돌 겁니다. 그러다가 fork 함수가 -1을 리턴한다면, (예를 들자면, 프로세스를 생성할 수 ..
최근댓글