하위 프로 세 스 를 만 들 고 부모 프로 세 스 를 종료 하 는 것 이 데 몬 을 만 드 는 첫 번 째 단계 입 니 다.데 몬 은 제어 터미널 에서 벗 어 나 기 때문에 첫 번 째 단 계 를 마 친 후 Shell 터미널 에서 프로그램 이 실 행 된 가상 을 만 듭 니 다.이후 의 모든 작업 은 하위 프로 세 스에 서 이 루어 졌 고 사용 자 는 셸 터미널 에서 다른 명령 을 실행 할 수 있어 서 형식적 으로 제어 터미널 과 의 이탈 을 실현 했다.리 눅 스에 서 부모 프로 세 스 가 하위 프로 세 스 보다 먼저 종료 되면 하위 프로 세 스 가 고아 프로 세 스 가 됩 니 다.시스템 에서 고아 프로 세 스 가 있 는 것 을 발견 할 때마다 1 번 프로 세 스(init)가 자동 으로 입양 합 니 다.그러면 원래 의 하위 프로 세 스 는 init 프로 세 스 의 하위 프로 세 스 가 됩 니 다.하위 프로 세 스에 서 새 세 션 을 만 드 는 것 은 데 몬 을 만 드 는 데 가장 중요 한 단계 입 니 다.간단 하지만 그 의 미 는 매우 큽 니 다.여기 서 사용 하 는 것 은 시스템 함수 setsid 입 니 다.setsid 를 구체 적 으로 소개 하기 전에 먼저 두 가지 개념 을 알 아야 합 니 다.프로 세 스 그룹 과 세 션 기간 프로 세 스 그룹:하나 이상 의 프로 세 스 의 집합 입 니 다.프로 세 스 그룹 에 프로 세 스 그룹 ID 가 있 습 니 다.프로 세 스 번호(PID)를 제외 하고 프로 세 스 그룹 ID 도 프로 세 스 의 필수 속성 입 니 다.모든 프로 세 스 그룹 에는 팀장 프로 세 스 가 있 습 니 다.팀장 프로 세 스 의 프로 세 스 번 호 는 프로 세 스 그룹 ID 와 같 습 니 다.또한 이 프로 세 스 그룹 ID 는 팀장 프로 세 스 종료 로 인해 영향 을 받 지 않 습 니 다.세 션 주기:세 션 기간 은 하나 이상 의 프로 세 스 그룹의 집합 입 니 다.보통 세 션 이 사용자 와 로그 인하 기 시작 하고 사용자 가 종료 하 는 동안 이 사용자 가 실행 하 는 모든 프로 세 스 는 이 세 션 기간 에 속 합 니 다.다음은 setsid 와 관련 된 내용 을 구체 적 으로 소개 할 수 있 습 니 다.(1)setsid 함수 역할:setsid 함 수 는 새로운 세 션 을 만 들 고 이 세 션 팀 의 팀장 을 맡 습 니 다.setsid 를 호출 하 는 데 는 다음 과 같은 세 가지 역할 이 있 습 니 다.프로 세 스 를 원래 세 션 의 제어 에서 벗 어 나 게 하고 프로 세 스 를 원래 제어 단말기 의 제어 에서 벗 어 나 게 합 니 다.그러면 데 몬 을 만 들 때 왜 setsid 함 수 를 호출 합 니까?데 몬 을 만 드 는 첫 번 째 단 계 는 fork 함 수 를 호출 하여 하위 프로 세 스 를 만 들 고 부모 프로 세 스 를 종료 합 니 다.fork 함 수 를 호출 했 을 때 하위 프로 세 스 는 부모 프로 세 스 의 세 션 기간,프로 세 스 그룹,제어 터미널 등 을 모두 복사 하 였 습 니 다.부모 프로 세 스 가 종료 되 었 지만 세 션 기간,프로 세 스 그룹,제어 터미널 등 은 변 하지 않 았 기 때문에 진정한 의미 에서 독립 된 것 이 아 닙 니 다.setsid 함 수 는 프로 세 스 를 완전히 독립 시 켜 다른 프로 세 스 의 제어 에서 벗 어 날 수 있 습 니 다.현재 디 렉 터 리 를 루트 디 렉 터 리 로 바 꾸 는 것 도 필요 한 절차 입 니 다.fork 를 사용 하여 만 든 하위 프로 세 스 는 부모 프로 세 스 의 현재 작업 디 렉 터 리 를 계승 합 니 다.프로 세 스 가 실 행 될 때 현재 디 렉 터 리 가 있 는 파일 시스템(예 를 들 어'/mnt/usb')은 마 운 트 해제 할 수 없 기 때문에 앞으로 의 사용 에 많은 번 거 로 움 을 초래 할 수 있 습 니 다(예 를 들 어 시스템 이 특정한 이유 로 단일 사용자 모드 에 들 어가 야 합 니 다).따라서 일반적인 방법 은'/'를 데 몬 의 현재 작업 디 렉 터 리 로 하 는 것 입 니 다.그러면 상기 문 제 를 피 할 수 있 습 니 다.물론 특별한 수요 가 있 으 면 현재 작업 디 렉 터 리 를 다른 경로 로 바 꿀 수도 있 습 니 다.예 를 들 어/tmp.작업 디 렉 터 리 를 바 꾸 는 일반적인 함수 식 chdir.파일 권한 마스크 파일 권한 마스크 를 재 설정 하 는 것 은 파일 권한 의 대응 위 치 를 차단 하 는 것 을 말한다.예 를 들 어 파일 권한 마스크 가 050 이면 파일 그룹 소유자 의 읽 기와 실행 가능 한 권한 을 차단 합 니 다.fork 함 수 를 사용 하여 새 하위 프로 세 스 가 부모 프로 세 스 의 파일 권한 마스크 를 계승 하기 때문에 이 하위 프로 세 스 가 파일 을 사용 하 는 데 많은 번 거 로 움 을 가 져 왔 습 니 다.따라서 파일 권한 마스크 를 0 으로 설정 하면 데 몬 의 유연성 을 크게 강화 할 수 있 습 니 다.파일 권한 마스크 를 설정 하 는 함 수 는 umask 입 니 다.여기 서 일반적인 사용 방법 은 umask(0)입 니 다.파일 설명 자 를 닫 는 것 은 파일 권한 코드 와 같 습 니 다.fork 함수 로 새로 만 든 하위 프로 세 스 는 부모 프로 세 스에 서 열 린 파일 을 계승 합 니 다.이 열 린 파일 들 은 데 몬 에 의 해 읽 히 지 않 을 수도 있 지만,시스템 자원 을 소모 할 수도 있 고,있 는 파일 시스템 을 해제 할 수 없 을 수도 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: