Signal 생성 함수, 예제
·
LINUX/Linux
모든 시그널은 SIG_ 로시작하는 Symbolic name을 가진다. 각각의 Signal에 대한 기본동작은 이미 OS단에서 정의되어있다. 더 자세히 설명하면? 시그널은 프로세스의 PCB 블록에 담겨있는 SIGNAL 관련 자료구조에 기본적인 액션이 명세되어있고, 이 기본 액션에 따라서 시그널이 도착하는 시점에 프로세스가 동작한다, 물론 sigaction 같은 함수를 통해 동작의 재정의가 가능하다. POSIX에서 지정한 시그널 번호와 이름은 다음과 같다. Signal symbolic name Signal Number default action Signal 0: question process alive? 0 SIGHUP 1 SIGINT 2 프로세스에 인터럽트를 발생시켜 죽임 ( Ctrl+C ) SIGQUIT ..
Signal 개념
·
LINUX/Linux
Siganl 시그널이란? Kernel or Process 에서 다른 process에게 어떤 사건이 발생했음을 알려주는 소프트웨어적인 통지(이벤트) Signal lifetime: 시그널 생성 시점부터 process에게 전달되는 시점까지 [Signal Handler] When process catch the signal , do specific action [Signal Pending] Signal that has been generated, but not yet delivered is said to be pending [Singal mask] 시그널을 블록시키는것, 시그널 마스크는 블록된 시그널의 리스트를 가진다. SIGNAL을 받은 시점에서 해당 프로세스의 ACTION Signal IGNORE SIgna..
pthread 함수 예제2
·
LINUX/Linux
프로그램 목적 각각 매개변수의 값 (0~9)를 출력하는 10개의 쓰레드를 생성하여 화면에 쓰레드 아이디-매개변수값 0~9를 출력하는 프로그램을 만들어보자. 도중에 쓰레드 생성에 실패하면 실패 에러메시지를 띄우고 해당 id의 쓰레드의 값은 출력하지 않고 다음라인으로 넘어간다! 이 코드에는 문제가 있다! 모든 쓰레드가 0~9이 아니라 10을 출력한다 for (i = 0; i < NUMTHREADS; i++) if (perror = pthread_create(tid + i , NULL, printarg, (void *)&i)) { // ~~ (중략) } 이 코드가 원인이다. 사실 pthread_create를 호출하면 메인은 OS에게 "쓰레드를 생성해줘!"라고 요청을 보내고 '요청에 성공!'하기만 하면 0을 바..
pthread 함수 예제
·
LINUX/Linux
만들고자 하는 프로그램 개요 정의 a.txt 에 쓰여있는 내용을 b.txt 로 복사하며 몇 바이트가 복사된 것인지 메시지를 띄우고자한다.! 1. 먼저 파일 내용을 복사할 함수 'copyfilemalloc'을 들여다보자. Q1. 만약 동적 메모리 할당이 아닌 bytesp를 static으로 선언한다면? A. 하나의 쓰레드에서는 읽고 쓰는데 문제가 없지만 2개 이상의 쓰레드가 bytesp를 이용할 경우 둘다 같은 장소에 바이트수를 저장하므로 한 쓰레드가 다른 한쪽의 값을 덮어 씌우는 결과가 발생.. Q2. 동적 메모리 할당의 단점은? A. 메인 쓰레드가 명시적으로 '해제' 해주지 않으면 메모리 leak 이 발생한다. Q3. 다른 대안은? A. 생성자 쓰레드 (create할때 생성된 스레드)가 한 공간을 별도로..
vim, vi Editor 라인별 복사 / 삭제 / 붙여넣기 명령어
·
LINUX/Linux
상황 구문 (명령모드에서) 한 줄 복사: yy 한 줄 삭제: dd 붙여넣기 : -p N줄 복사나 삭제는 nyy ndd ex) 3줄 복사 -> 3yy 졸라 쉽누.. 이렇게 하나씩 단축키를 늘려가는그야!
하드 링크 , 심볼릭 링크 개념과 간단한 실험예제
·
LINUX/Linux
[하드링크] 원본 파일과 연동되는 또 하나의 원본파일 inode 구조체에서 Link Count값 증가 Link Count가 0이되면 OS가 Inode와 할당된 메모리 공간을 해제한다. 하드 링크를 생성 할 경우 원본 파일과 하드 링크간의 Inode값은 동일하고 Directory Entry 항목만 추가될 뿐이다. [심볼릭 링크] 원본 파일의 경로명 정보를 갖는 링크파일이다. 비유하자면 바탕화면의 바로가기! 심볼릭 링크를 연다는 것은 OS가 Inode값 참조하여 아! 이색기 원본 요기잉네?! 하고 원본 파일을 여는것과 같은것이다. 심볼릭 링크는 Inode의 Link Count값을 증가시키지 않는다. 또 그 자체로도 별도의 Inode 값을 가진다. ※ 바로가기같은 개념이기 때문에 원본파일이 지워지면 심볼릭 링..