리눅스(6)
-
[AIX] 프로세스 통신 중 DISK I/O가 100% 차는 현상
데이터량이 급증하면서 갑자기 서버에 지연이 발생하기 시작하였습니다.. 해당 이슈에 대한 원인을 분석하다 보니 해당 서버의 DISK I/O가 100% 차는 현상을 발견하였고 이유로는 프로세스 통신 중에 발생된 걸로 확인이 되었습니다. TMI) DISK 확인 방법: nmon 프로그램, iostat 명령어 사내에서 테스트를 해본 결과, 리눅스에선 정상적으로 지연 없이 동작하였지만 AIX에선 IO wait이 많이 소요되어서 FILE 처리에 대해 부하가 걸려 지연이 되었던 것입니다. 기존 Named Pipe를 사용했던 방식을 Message Queue로 방식을 바꿔 테스트를 진행하였고 더 이상 지연 없이 정상 동작되는 모습을 확인하였습니다. 결론 AIX에선 파일 처리에 대한 속도가 리눅스보다 많이 부족하기 때문에 ..
2021.10.03 -
[유닉스/리눅스] popen , pclose 정리 및 사용 예제
저는 popen과 pclose는 프로세스 사이에 입/출력 데이터를 어쩌면 가장 간단하게 읽고 쓰는 방법이라고 생각됩니다. 다만 pipe 함수보다 고수준이기에 읽고 쓰는 것에 대한 제약이 존재합니다. popen popen 함수는 프로세스 내부에서 새로운 프로세스를 불러내어 명령어를 실행시키고 해당 프로세스와 입/출력 데이터를 주고 받을 수 있도록 FILE 포인터를 return 해주는 함수입니다. 1. 함수 원형 #include FILE *popen(const char *command, const char *open_mode); command → 입력되는 문자열은 실행시킬 명령에 대한 문자열로 매개 변수도 함께 넣어 실행할 수 있습니다. open_mode → 반드시 'r' (read) 'w' (write) ..
2021.08.01 -
[Unix/Linux] Signal 의 종류
signal은 어떠한 조건에 대응하여 유닉스 시스템이 발생시키는 이벤트이며 프로세스는 어떠한 signal을 받는가에 따라 다음 행동을 취합니다. signal은 여러 에러 조건에 의해 shell이나 signal을 발생시키는 터미널 처리기에 의해 발생합니다. 또한, 하나의 프로세스에서 다른 프로세스에게 정보를 전달하거나, 행동을 변경시키기 위한 방편으로도 signal을 보낼 수 있습니다. signal의 이름들은 signal.h 헤더 파일에 정의되어 있으며, 'SIG' 로 시작합니다. signal name description (default action) SIGKILL 현재 활동중인 프로세스를 강제로 종료시킬 때 사용되며 이 signal은 프로세스가 포착하거나 무시할 수 없습니다. SIGHUB 터미널 접속이..
2021.02.27 -
[c 언어] 함수(function)의 return
return 이란 c언어로 프로그래밍하면서 함수라는 요소는 필수적입니다. 그렇다면 그의 짝꿍인 return 또한 빼놓을 수 없겠죠. return은 말 그래도 반환해준다는 의미입니다. 여기서 반환은 함수가 끝났다는 의미를 가지고 마지막 남기는 메시지를 반환해준다고 생각하시면 됩니다. 이때 반환되는 자료형은 함수의 타입(반환 자료형)이 됩니다. return 사용 방법은 아래와 같습니다. 타입(반환 자료형) 함수 이름(매개변수) { 함수 내용; return 반환 값; } return에 대한 간단한 코드를 작성해 예를 들어보겠습니다. #include double func3() { return 3.0/2; } char *func2() { return "HELLO"; } char func1() { return 'a..
2020.10.11 -
[리눅스] open, close, write, read (+ file descriptors)
기본적으로 유닉스와 리눅스의 구조는 파일로 되어있다고 생각하시면 됩니다. 여기서 코딩을 하며 파일이나 장치를 컨트롤하거나 액세스 하기 위한 가장 중요한 함수들은 아래 네 가지입니다. open, close, write, read 이 함수들은 OS에서 직접 제공하며 그 자체로서 운영체제에 대한 인터페이스 역할을 한다고 생각하시면 됩니다. 여기서 또 중요하게 아셔야 되는 부분은 fd 즉, file descriptors입니다. 한글로 번역한다면 파일 기술자라고 하는 이 값은 파일이나 장치를 열고 액세스 하기 위해 사용할 수 있는 유일한 정수 값입니다. 한마디로, 이 fd 값을 통해 열린 파일이나 장치 중 원하는 특정 파일이나 장치로 접근할 수 있습니다. open함수를 사용하지 않아도 기본적으로 0, 1, 2라는..
2020.10.05 -
[리눅스/유닉스] 프로그램 장애 확인 및 처리
프로그램 코드를 짤 때 가장 중요한 것은 예외 처리를 하는 것입니다. 하지만 최대한 예외 처리 또는 에러 처리를 진행한다 해도 저희가 생각하지도 못한 곳에서 에러가 발생하거나 못 보고 지나칠 경우도 존재합니다. 그런 경우에는 크게 두 가지 현상이 발생합니다. 1. 컴파일하면서 에러 발생 컴파일 에러인 경우, 컴파일을 할 때 에러가 발생한 위치를 정확히 알려주어 비교적 쉽게 수정하여 해결이 가능합니다. (이때, warning으로 발생되는 코드도 무시하시지 말고 해결하여 컴파일하길 권장합니다.) 2. 프로그램 실행 도중 에러 발생 만약 컴파일이 완료가 되어 실행 프로그램이 생성되었다 하더라도 실행 프로그램이 돌다가 죽어버리는 현상이 발생하며 이때 코어 파일 사이즈가 설정이 되어있다면 코어 파일이 생성됩니다...
2020.10.02