LINUX

포스트: 477|조회수: 0|TERM
Items

Posts

477 posts

리눅스 bash 스크립트에서 연관 배열(associative array) 사용하기

반달가면|2017년 12월 18일

통상적인 배열(array)에 대한 내용은 이전 게시물을 참고하자. 여기로 리눅스 bash 스크립트에서 연관 배열(associative array)을 사용하는 방법이다. 연관 배열은 인덱스를 수자로 사용하지 않고 문자열을 사용할 수 있다. 변수를 연관 배열로 사용하려면 해당 변수가 연관 배열임을 미리 선언해 주어야 한다. declare 명령으로 선언하면서 -A 옵션으로 연관 배열임을 지정해야 한다. # 변수 arr_test를 연관 배열로 선언 declare -A arr_test 이제 인덱스를 문자열로 사용할 수 있다. 아래의 예시를 보자. # 배열 값 할당 arr_test[abc]=0 arr_test[def]=1 # 배열에 저장된 내용 출력 echo ${arr_test[ab

[Linux][Kernel] fd(file descriptor: 파일 디스크립터) 등록 - 코드리뷰

Guillermo Austin Kim|2017년 12월 17일

리눅스 시스템 프로그램을 보면 fd를 얻어오는 코드를 자주 볼 수 있어요. fd를 보통 file descriptor라고 하죠.특정 프로세스에서 파일 핸들이라고 이야기하고요. 그럼 fd가 커널 공간에서 어떻게 생성되고 저장되는지 살펴보도록 할께요.#include #include #include #include #include #include #define MAX 1024 int main (int argc, char ** argv[]) { int fd; int readn = 0; int writen = 0; char

[Linux][Kernel] Kernel Panic @__stack_chk_fail - 스택 카나리 (Stack canary Feature)

Guillermo Austin Kim|2017년 12월 16일

최근 흥미로운 커널 패닉이 나왔는데요. 디버깅 과정을 공유 좀 하고자 해요. 일단 콜스택부터 볼께요. sock_has_perm() 함수가 돌다가 갑자기 __stack_chk_fail() 함수 호출로 panic()이 일어났거든요. 왜 이런 현상이 발생했을까요?crash> bt e5752c00PID: 1787 TASK: e5752c00 CPU: 4 COMMAND: "net_socket"bt: WARNING: stack address:0xe853fa38, program counter:0xc0ee5b60 #0 [ ] (panic) from [ ] #1 [ ] (__stack_chk_fail) from [

[Linux][Kernel] Process 프로세스 상태 (1) - 런큐(Runqueue) 디버깅

Guillermo Austin Kim|2017년 12월 14일

이번 시간에는 각 프로세스 상태에 대해 조금 더 짚어보려고 해요. 리눅스 커널 책을 보면 프로세스 상태에 대한 State Machine을 많이 볼 수 있는데요.Running/Ready 상태 이런 거죠. 실제 리눅스 커널에서는 어떤 API로 구현되는 지 살펴보려고 해요. 무엇보다 실제 데이터 구조체를 살펴보려고 해요. 1> Running State Process 프로세스가 실행되기 위해서는 뭘 해야 할까요? 런큐에 프로세스를 큐잉해야 해요. Runqueue에서 돌고 있는 프로세스를 Running 상태 프로세스라고 볼 수 있어요. 그럼 Crash Tool로 이 디버깅 정보를 어떻게 확인 가능하냐면요. 아래 커맨트로 볼 수 있어요.crash> runqCPU 0 RUNQUEUE: c4b4cb80