Loading...

리눅스

포스트: 527 개

[라즈베리파이] 시그널 - 커널 공간 시그널 함수 분석 - do_sigaction()

다음으로 살펴볼 코드는 do_sigaction() 함수입니다. 먼저 do_sigaction() 함수는 선언부를 봅시다.int do_sigaction(int sig, struct k_sigaction *act, struct k_sigaction *oact); do_sigaction() 함수에 전달하는 인자 속성은 다음과 같은데 sys_rt_sigaction() 함수에 전달된 인자 유형과 같습니다.int sig: 설정한 시그널 번호struct k_sigaction *act: 새롭게 설정하는 시그널 속성struct k_sigaction *oact: 이전에 설정했던 시그널 속성 do_sigaction() 함수 인자를 알아봤으니 코드를 분석할 차례입니다.1 int do_sigaction(int sig, struc

[bash: sed] 특정 행부터 파일 마지막까지 출력하기

우선, sed 명령으로 파일의 특정 범위를 출력하는 기본적인 방법은 이전 게시물을 참고하자. 여기로 # my_file.txt 파일의 12번째 행만 출력 sed -n 12p my_file.txt # my_file.txt 파일의 3번째 행부터 12번째 행까지 출력 sed -n 3,12p my_file.txt 예를 들어, my_file.txt 파일이 총 몇개의 행으로 이루어져 있는지 확인하지 않고 어쨌든 3번째 행부터 마지막까지 출력하려면 아래와 같이 할 수 있다. # my_file.txt 파일의 3번째 행부터 마지막 행까지 출력 sed -n "3,\$p" my_file.txt 마지막 행을 지칭하는 기호가 "$"인데, 셸(shell)에서 변수를 지칭하는 것으로 해석되지 않도록 역

[라즈베리파이] 시그널 - 커널 공간 시그널 함수 분석 - sys_rt_sigaction()

먼저 sys_rt_sigaction() 함수 코드를 보기 전에 선언부 코드를 확인합시다.[https://elixir.bootlin.com/linux/v4.14.70/source/include/linux/syscalls.h]asmlinkage long sys_rt_sigaction(int, const struct sigaction __user *, struct sigaction __user *, size_t); 함수 선언부 가장 왼쪽에 있는 asmlinkage 지시자는 어셈블리 코드에서 이 함수를 호출한다는 의미입니다. 조금 더 구체적으로 vector_swi 레이블에서 sys_rt_sigaction() 함수로 분기합니다. sys_rt_sigaction() 함수에 전달하는 인자와 속성은

[라즈베리파이] 시그널 - 커널 공간 시그널 함수 분석

[라즈베리파이] 시그널 - 커널 공간 시그널 함수.. 시그널과 연관된 동작을 변경하면 유저 공간에서 sigaction() 함수를 호출하면 됩니다. 이 함수를 호출하면 시스템 콜 핸들러인 sys_rt_sigaction() 함수가 실행하며 커널 공간에서 시그널을 설정합니다. 이 실행 흐름을 표현하면 다음 그림과 같습니다. 유저 공간에서 sigaction() 함수를 호출하면 커널 공간에서 sys_rt_sigaction() 함수를 호출합니다. 유저 공간에서 sigaction() 함수를 호출하면 커널 공간에서 sys_rt_sigaction() 함수가 어떻게 실행하는지 바로 이해하기 어렵습니다. 이 과정을 조금 더 자세히 정리하면 다음과 같습니다.[유저 공간]1. r7에 sys_rt_sigaction() 함수에 해당하는 시스템 콜 번호인 174를 지정2. “sv

locate - mlocate 데이터베이스 정보 확인 및 수동 갱신

파일을 빠르게 찾기 위한 locate 명령에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로 기본적인 사용 예시는 아래와 같다. # 디렉토리 경로 또는 파일명에 문자열 "abc"를 포함한 경우 찾기 locate "abc" # 파일명(basename)에 문자열 "abc"를 포함한 경우 찾기 locate -b "abc" # 정규표현식 사용, 문자열 "Abc" 또는 "abc"를 포함한 경우 찾기 locate --regex "[Aa]bc" locate에서 참조하는 데이터베이스(mlocate DB) 관련 정보를 확인하려면 -S(대문자) 옵션을 이용한다. # mlocate DB 정보 출력 locate -S Database /var/lib/mlocate/mlocate.d

[라즈베리파이] 시그널 - 시그널 관련 시스템 콜 함수 소개

시그널 관련 시스템 호출 함수는 다음과 같습니다.함수 이름 동작 시스템 콜 핸들러kill 쓰레드 그룹에 시그널을 보냄 sys_killtkill 프로세스에 시그널을 보냄 sys_tkilltgkill 특정 쓰레드 그룹에 있는 프로세스에게 시그널을 보냄 sys_tgkillsigaction 시그널 속성 설정 sys_rt_sigactionsigpending 펜딩된 시그널이 있는지 점검 sys_rt_sigpendingsigprocmask 블록되어 있는 시그널 집합을 수정 sys_rt_sigprocmasksigsuspend 시그널을 기다림 sys_rt_suspendpause 시그널을 수신할 때 까지 기다림 sys_pause 가장 왼쪽

[라즈베리파이] 시그널 - 커널 공간에서 시그널 설정은 어떻게 할까?

[라즈베리파이] 시그널 - 커널 공간에서 시그널.. 이전 시간에서 유저 프로세스에서 시그널을 설정하는 코드를 살펴봤습니다. 이번 시간에는 커널에서는 시그널을 설정하면 어떤 동작을 하는지 살펴보겠습니다. 유저 프로세스가 시그널 설정을 위해 리눅스 표준 함수를 쓰면 시스템 콜을 발생해서 해당 시스템 콜 핸들러를 실행합니다. sigaddset()와 같이 시그널 자료구조만 변경하는 함수는 시스템 콜을 발생하지 않고 커널에 시그널 설정을 요청하는 sigaction() 함수나 시그널을 기다리는 pause() 와 같은 함수를 호출할 때 시스템 콜을 발생합니다.

포스트: 527개 | 1 / 52


Links
  • Privacy Policy
  • Terms of Use
  • XHTML
  • CSS
  • 2018.36-4-gf56f529
  • 시가총액: 70,524,700
    • 게임 : $22,063,800.00
    • 영화 : $17,941,300.00
    • 에니메이션 : $10,707,200.00
    • 여행 : $7,145,300.00
    • 방송연예 : $5,989,800.00
    • 스포츠 : $5,829,400.00
    • IT : $748,600.00
    • 자동차 : $58,400.00
    • 쇼핑 : $35,100.00