반응형

전체 글 803

IPC - 02. 신호 처리, sigaction 안정적 신호 인터페이스

/* * http://sosal.tistory.com/ * made by so_Sal */ 01.에서 봤던 kill 명령어를 더 자세히 보겠습니다. #include #include int kill(pid_t pid, int sig); 인자만 봐도 쉽게 알 수 있듯, kill 명령어에는 해당되는 프로세스 id와 명시적 sig를 전달합니다. #include int pause(void); 신호가 발생할 때까지 프로그램의 실행을 정지합니다. 신호를 받으면 호출되는 신호 처리부의 행동을 재개합니다. * 안정적 신호 인터페이스 sigaction #include int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); **** struc..

IPC - 01. 프로세스 신호 signal 주고받기

/* * http://sosal.tistory.com/ * made by so_Sal */ 프로세스 통신방법엔 대표적인 방법 3가지. siganl (신호), pipe (파이프), socket (소켓) 이 있다. signal은 돌맹이 pipe는 편지 socket는 소포에 비유할 수 있다. signal이 돌맹이에 비유한다는 것은, 짱똘을 던지면 내가 너에게 화가났다. 조약돌을 던지면 내가 너를 사랑한다. 등등.. 행동에 대해 미리 약속을 해놓은 후 그 행동을 통하여 서로 대화를 나누는 방법이랄까? 가수들이 무대에서 무슨 손가락 모양을 하면서 비밀스런 애인에게 사랑을 전달하는 방법도 이에 포함되겠다 ^-^;; pipe나 socket에 대한 비유는..음.. 이글은 SIGNAL 관련 글이므로 생략하겠습니다 ㅋㅋ ..

System - 05. wait() 프로세스 동기화

/* * http://sosal.tistory.com/ * made by so_Sal */ fork 함수로 생성된 자식 프로세스는 독립적으로 실행됩니다. 따라서 부모프로세스는 자식프로세스가 하는 일을 알 수 없고, 변수의 공유나 자식프로세스가 계속 살아있는지 등에 대한 정보를 기본적으로는 알 수 없습니다. #include #include pid_t wait(int *stat_loc); //call by reference stat_loc은 종료된 프로세스의 pid 값을 리턴하여 보통 pid_t 변수에다 저장합니다. ex) int stat_loc; pid_t child_pid; child_pid = wait(&stat_loc); wait 시스템콜은 자식프로세스중 하나가 종료될 때까지 부모 프로세스를 기다리게..

System - 04. fork 복제 프로세스 생성

/* * http://sosal.tistory.com/ * made by so_Sal */ #include #include pid_t fork(void); fork함수를 사용하면 multi - tasking system을 볼 수 있습니다. 부모프로세스가 fork함수를 호출하면 자식프로세스를 생성합니다. 파일 이름이 fork이고, fork 함수를 실행시키는 파일을 실행해보고, pstree를 통해서 현재 자신의 쉘에 띄워진 프로세스들을 봅시다. fork 라는 파일의 프로세스 아래에 자신과 똑같은 이름의 프로세스가 하나 더 생겼네요. 여기서 마지막 fork 프로세스를 실행시킨 첫번째 fork 프로세스를 부모프로세스, 새로 생긴 마지막 fork라는 프로세스는 자식 프로세스라고 합니다. fork함수로 실행된 각각..

System - 03. exec () 계열. 프로세스 이미지 대체

/* * http://sosal.tistory.com/ * made by so_Sal */ exec 함수라는것은 사실 없고, exec 계열이라고 말한다. exec로 시작되는 여러 함수를 통칭하여 exec 계열이라고 한다. exec 계열의 함수는 프로세스를 대체해버린다. system()함수는 프로세스 실행 도중에 다른 프로그램을 실행시켜 끝날때 까지 기다린후 새로 실행시킨 프로그램의 동작이 끝나게 되면 다시 원래 프로세스로 돌아와 일을 계속 한다. 하지만 exec 계열의 함수는 현재 프로세스를 새로운 프로그램으로 대체해버린다. exec 함수들을 이용하면 현재 프로그램의 실행을 다른 프로세스에게 넘겨줄 수 있다. 새 프로그램이 시작된 후에는 원래의 프로그래밍 더 이상 실행될 필요가 없다는 점에서 system..

Socket - 04. 다중 프로세스 네트워크 프로그래밍

/* * http://sosal.tistory.com/ * made by so_Sal */ 일반적으로 서버 프로그램은 불특정 다수의 클라이언트로부터 서비스 요청을 처리할 수 있는 다중 사용자 서버 (Multi-user server)로 개발됩니다. 다중 사용자 서버는 반복 처리 서버(Iterative Server)와 동시 처리 서버(Concurrent Server)로 개발될 수 있습니다. 반복 처리 서버는 개발하기 쉽고 이해하기 쉽지만, 사용자가 많아질 경우 클라이언트가 서비스를 위해 대기하는 시간이 길어질 수 있기 때문에 현실적으로 사용하기 어렵습니다. 동시 처리 서버는 다수의 클라이언트로부터 서비스 요청을 동시에 처리함으로써 서비스 제공을 보장합니다. 대표적인 모델은 다중프로세스와 다중 스레드 등이 존..

Object file - ELF 파일

/* * http://sosal.tistory.com/ * made by so_Sal */ ELF :: Executable and Linking Format의 약자로, 실행 가능한 바이너리 또는 오브젝트 파일 등의 형식을 규정한것 ELF 파일은 ELF 헤더가 반드시 맨 앞에 위치하고, 프로그램 헤더 테이블과 섹션 헤더 테이블이 그 뒤에 위치합니다. 헤더의 구조는 elf.h를 참조하세요. b ELF에서 사용하는 자료형 elf 바이너리에는 32비트와 64비트, 두가지가 있습니다. 자료형 N = 32 N = 64 설명 ElfN_Half uint16_t uint16_t 부호 없는 16 비트 값 ElfN_Word uint32_t uint32_t 부호 없는 32 비트 값 ElfN_Sword int32_t in..

Linux/Linux_technic 2009.10.23

od - 바이너리 파일 덤프

/* * http://sosal.tistory.com/ * made by so_Sal */ od = octal dump (octal = 8진법)라는 의미로, 바이너리 파일을 8진수로 덤프해서 줄력하는 명령어입니다. od /bin/bash | head -5 head -5 는 출력되는 줄의 윗부분 5줄만 거른다는 뜻입니다. 맨 왼쪽 00000*0은 시작점으로부터의 offset을 8진수를 표시한 것입니다. (offset은 좌측 메모리 시작점을 0으로 하여 숫자를 통해 위치를 알려주는 좌표계 역할을 함) 2바이트씩 8개, 16바이트씩 출력하기 때문에 00,20,40... 으로 늘어나게 됩니다. 출력 형식 지정 (-t 명령어) 형 의미 a 문자의 이름(7비트 ASCII) c ASCII 문자 또는 escape 문..

Linux/Linux_technic 2009.10.23

File - 파일종류 확인

/* * http://sosal.tistory.com/ * made by so_Sal */ file 명령어를 이용하면 임의의 파일이 무엇인지 조사할 수 있습니다. 윈도우에선 파일 확장자를 정해 두고 파일명을 통해 그 종류를 추측하는 방법을 사용합니다. 하지만 리눅스에서는 확장자가 존재하지 않기 때문에, 임의의 파일의 종류를 알기 위해선 이 명령어가 필요하게 됩니다. /usr/bin/file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped -i 옵션을 주면 MIME 미디어 타입 문자열로 표시..

Linux/Linux_technic 2009.10.22
반응형