본문 바로가기
반응형

C3

Segmentation Fault 세그멘테이션 오류 (Core dump) Segmentaiton Fault 세그멘테이션 오류 흔히 포인터 관련 오류로 쉽게 접하고 사실은 메모리 관련 오류이다. 흔히 리눅스, 유닉스 계열에서 프로그래밍을 하다 보면 (Segmentaion Fault) 세그멘테이션 오류(Core dumped)라는 오류를 종종 보았을 것이다. 이는 메모리 보호 기법에 의해 발생한 오류로 허가되지 않은 메모리의 접근을 방지하기 위해서이다. MS의 윈도우에서는 예외처리를 하여 다양한 오류 상황에 대처하도록 설계되어있다. 그러나 UNIX 계열에는 단지 허가되지 않은 메모리의 접근을 에러 처리할 뿐이다. 그래서 오류를 찾기도 조금 더 어렵고 어디서 발생했는지 모르는 경우도 발생한다. 메모리 관리가 프로그래머에게 주어진 C/C++에서 발생한다. core dump는 메모리가 .. 2021. 7. 5.
스레드와 C언어 스레드 pthread 스레드 개념 스레드는 fork 함수가 하는 것처럼 자식 프로세스처럼 역할을 하지만 경량화된 형태이다. 새로운 프로세스에 비해 적은 비용으로 생성과 관리가 가능하다. 스레드는 하나의 실행 흐름을 말하며 환경에 따라 여러 스레드를 동시에 실행이 가능하다. 하나의 프로세스에서 여러 개의 스레드가 서로 자원과 메모리를 공유하여 작동한다 스레드 관리 스레드를 누가 관리하느냐에 따라서 이를 나눌 수 있다. 큰 차이가 없어 보이나 그 방식과 원리에서 보면 큰 차이가 있다. 사용자 수준의 스레드 커널 밖에서 구현된 스레드로 같은 메모리에서 스레드가 생성 및 관리되어 속도가 빠르다. 그러나 하나의 스레드가 시스템 호출이나 장애 등으로 중단이 되면 나머지 모두도 중단이 된다. 브라우저를 사용하다 하나의 탭이 멈추면 나머지.. 2021. 6. 19.
[C Socket Programing] servent 구조체(servent structure) Servent servent 구조체를 이해하기 위해서는 소켓 프로그래밍 자체뿐만 아니라 네트워크 흐름에 대해서 알면 이해가 쉽다. 처음 봤을 때는 이해가 되지 않았으나 방화벽등 네트워크 장비를 만지다 보니 이해가 되었다. getservent(), getservbyname(), getservbyport() 등과 같은 함수와 같이 쓰이며 주로 /etc/services의 정보를 읽어 사용한다. DNS를 알아내거나 서비스(포트 주소) 자체를 이용하기 위해 사용한다. Servent 구조체 struct servent{ char *s_name; char **s_aliases; int s_port; char *s_proto; } servent구조체는 이와 같이 정의되어 있다. s_name : 서비스 이름, 포트명 s_.. 2021. 6. 7.
반응형