Linux 애플리케이션 개발 및 신호 처리

ManuelSchneid3r

현재 사용자가 애플리케이션 종료에 대해 불평하는 데 문제가 있습니다. 일부 (임의로 보이는) 조건 및 데스크톱 환경에서 앱이 종료되지 않고 재부팅시 설정이 저장되지 않습니다. 나는 관련 irc 채널에서 요청했고 대부분의 경우 신호를 올바르게 처리하라는 지시를 받았습니다. 터미널의 Ctrl-C에 대한 SIGINT와 "정상"종료에 대한 SIGTERM을 알고 있습니다. 하지만 SIGHUP도 중요하다고 들었습니다. 그래서 제 질문은 :

잘 작동하는 애플리케이션을 구축하려면 어떤 신호를 처리해야합니까?

PSkocik

https://en.wikipedia.org/wiki/Unix_signal

표준 신호 목록과 기본 동작이 있습니다. 충분한 권한이있는 프로세스는 항상 신호를 보낼 수 있지만 프로세스 (또는 프로세스를 통해)는이를 수행해서는 안됩니다.

대상이 전송하려는 특수 신호를 처리한다는 것을 알지 못하는 경우 에만 kill프로세스 killTERM 및 환경 (쉘, 터미널 드라이버)에서 생성 할 수있는 신호 묶음으로 처리 될 것으로 예상해야합니다 .

동작별로 기본 신호를 정렬 할 수 있습니다.

코어 덤핑 신호

ABRT TRAP SYS BUS FPE ILL SEGV   XFSZ XCPU QUIT

일부 특수 기능을 사용하여 사용자 (TRAP, ABRT, SYS)에 의해 생성되거나 하드 오류 상태 (BUS, FPE, ILL, SEGV)가 생성됩니다. QUIT코어 덤프 ( C+\)를 원하는 터미널에서 사용자가 생성합니다 .

이들을 기본 처리로 유지할 수 있습니다.

아웃의 종료 신호 :

HUP INT PIPE TERM ALRM POLL PROF USR1 USR2

너는 기대해야한다

HUP INT PIPE TERM

다양한 상황에서 환경에서 :

HUP -- when the terminal hungs up or you become a stopped orphaned process
INT -- when the user at the terminal interrupts you with C-c
PIPE -- when a PIPE or socket you write into closes, e.g. by
        exiting before you finished writing to it 
       (`yourprogram | (exit)` will give you a `PIPE` 
        if yourprogram attempts to write to its STDOUT) 
TERM -- when a process ends you a normal termination request

직접 설정 한 경우에만 나머지 종료 신호를 수신해야합니다.

KILL and STOP 당신은 아무것도 할 수 없습니다.

터미널에서 생성 된 정지 신호 를 가로 챌 수 있습니다 .

TTIN -- you read from the terminal and you're a backgrounded process
TTOU -- you write the terminal when you're a backgrounded process
        and the terminal is set to put you to sleep when you do
TSTP -- you're being put to sleep with `C-Z`

그러나 최악의 경우 상태를 손상시키지 않고 프로세스를 중지합니다.

당신이 처리 할 필요가 알지 못한다면 CHLD, CONT또는 URG, 당신은하지 않습니다.

TL; DR :

기본적으로 HUP, INT, PIPE 및 TERM은 일반적으로 사전 종료 정리를 수행하려는 경우 처리 (또는 무시)해야한다고 생각합니다. 프로그램이 해당 신호를 사용하지 않거나 모든 상황에서 일부 정리가 절대적으로 필요하지 않는 한 나머지는 그대로 둘 수 있습니다.

후자의 경우 처리되지 않은 모든 신호를 공백으로 차단할 수 있지만 신호 차단 마스크는 포크를 통해 상속되고 호출을 실행하고 ILL과 같은 신호를 무시하거나 차단합니다. kill 또는 sigqueue로 정의되지 않은 동작을 제공합니다.

더 자세히 알아 보려면 맨 페이지와 표준을 살펴보십시오. 시그널은 유닉스에서 상당히 큰 주제이며 그것들을 다루는 것은 매우 까다로울 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

REST를 사용한 SAAS 및 애플리케이션 개발

분류에서Dev

Scrum 및 Jira를 사용하여 3 계층 애플리케이션 개발 처리

분류에서Dev

개발자 용 Websphere 애플리케이션 서버 Linux 명령 줄 설치

분류에서Dev

3 계층 및 2 계층으로 애플리케이션 개발

분류에서Dev

iOS 애플리케이션 개발

분류에서Dev

phonegapp 애플리케이션 개발

분류에서Dev

Windows 10 애플리케이션 개발

분류에서Dev

Windows CE + 애플리케이션 개발

분류에서Dev

Java 및 C # 애플리케이션 간의 소켓 통신

분류에서Dev

애플리케이션 내 및 애플리케이션 간 발행-구독 패턴

분류에서Dev

Linux 서버에서 MVC 애플리케이션 호스팅

분류에서Dev

Windows Form 애플리케이션 및 SQL Server 호스팅?

분류에서Dev

Android : "애플리케이션 수준"일시 중지 및 재개

분류에서Dev

WSL 상호 운용성 : Bash가있는 개방형 Windows 10 애플리케이션 (Windows Linux 하위 시스템)

분류에서Dev

두 개의 IVR 애플리케이션 통신

분류에서Dev

개발 된 머신이 아닌 다른 머신에서 Java 애플리케이션 (Maven) 실행

분류에서Dev

kotlin을 사용하여 개발 된 Android 애플리케이션의 레이아웃 문제 및 버그

분류에서Dev

Kuberntes 수신 및 클라이언트 인증 애플리케이션

분류에서Dev

새 세션을 요청할 때 Chromecast 발신자 애플리케이션 오류

분류에서Dev

SSO 양식 인증-애플리케이션 2 개-WebForms 1 개 및 MVC 1 개

분류에서Dev

iPhone 애플리케이션 개발에 필요한 하드웨어 및 소프트웨어

분류에서Dev

iPhone 애플리케이션 개발에 필요한 하드웨어 및 소프트웨어

분류에서Dev

YII의 상수 정의, 'Yii 및 PHP를 사용한 웹 애플리케이션 개발'연구

분류에서Dev

Cordova 및 Phonegap으로 애플리케이션을 개발하려면 Eclipse를 설치해야합니까?

분류에서Dev

Jersey 및 Springboot 애플리케이션에서 java.lang.StackOverflowError가 발생 함

분류에서Dev

Squirrel.Windows 및 Octopus Deploy : 애플리케이션 서명 중 오류 발생

분류에서Dev

Linux의 Java 애플리케이션

분류에서Dev

Java Linux Shell 애플리케이션

분류에서Dev

Sitecore에서 하이브리드 애플리케이션 개발

Related 관련 기사

  1. 1

    REST를 사용한 SAAS 및 애플리케이션 개발

  2. 2

    Scrum 및 Jira를 사용하여 3 계층 애플리케이션 개발 처리

  3. 3

    개발자 용 Websphere 애플리케이션 서버 Linux 명령 줄 설치

  4. 4

    3 계층 및 2 계층으로 애플리케이션 개발

  5. 5

    iOS 애플리케이션 개발

  6. 6

    phonegapp 애플리케이션 개발

  7. 7

    Windows 10 애플리케이션 개발

  8. 8

    Windows CE + 애플리케이션 개발

  9. 9

    Java 및 C # 애플리케이션 간의 소켓 통신

  10. 10

    애플리케이션 내 및 애플리케이션 간 발행-구독 패턴

  11. 11

    Linux 서버에서 MVC 애플리케이션 호스팅

  12. 12

    Windows Form 애플리케이션 및 SQL Server 호스팅?

  13. 13

    Android : "애플리케이션 수준"일시 중지 및 재개

  14. 14

    WSL 상호 운용성 : Bash가있는 개방형 Windows 10 애플리케이션 (Windows Linux 하위 시스템)

  15. 15

    두 개의 IVR 애플리케이션 통신

  16. 16

    개발 된 머신이 아닌 다른 머신에서 Java 애플리케이션 (Maven) 실행

  17. 17

    kotlin을 사용하여 개발 된 Android 애플리케이션의 레이아웃 문제 및 버그

  18. 18

    Kuberntes 수신 및 클라이언트 인증 애플리케이션

  19. 19

    새 세션을 요청할 때 Chromecast 발신자 애플리케이션 오류

  20. 20

    SSO 양식 인증-애플리케이션 2 개-WebForms 1 개 및 MVC 1 개

  21. 21

    iPhone 애플리케이션 개발에 필요한 하드웨어 및 소프트웨어

  22. 22

    iPhone 애플리케이션 개발에 필요한 하드웨어 및 소프트웨어

  23. 23

    YII의 상수 정의, 'Yii 및 PHP를 사용한 웹 애플리케이션 개발'연구

  24. 24

    Cordova 및 Phonegap으로 애플리케이션을 개발하려면 Eclipse를 설치해야합니까?

  25. 25

    Jersey 및 Springboot 애플리케이션에서 java.lang.StackOverflowError가 발생 함

  26. 26

    Squirrel.Windows 및 Octopus Deploy : 애플리케이션 서명 중 오류 발생

  27. 27

    Linux의 Java 애플리케이션

  28. 28

    Java Linux Shell 애플리케이션

  29. 29

    Sitecore에서 하이브리드 애플리케이션 개발

뜨겁다태그

보관