process-groups

tmux 창에서 처리할 신호 보내기
process-groups

tmux 창에서 처리할 신호 보내기

애플리케이션 X가 tmux 창의 전경에서 실행되고 있다고 가정합니다. SIGUSR1이라는 특정 신호를 애플리케이션 X로 보내고 싶습니다. 현재 선택된 창의 전경 프로세스(또는 프로세스 그룹)에 신호를 보내도록 tmux 키 바인딩을 구성할 수 있나요? ...

Admin

백그라운드 함수 "$!"의 PID가 잘못된 값을 제공합니다.
process-groups

백그라운드 함수 "$!"의 PID가 잘못된 값을 제공합니다.

백그라운드에서 실행되는 함수의 PID를 캡처하려고 하는데 숫자가 잘못된 것 같습니다. 다음 스크립트를 참조하세요. $ cat test1.sh #!/bin/bash set -x child() { echo "Child thinks is $$" sleep 5m } child & child_pid="$!" echo "Parent thinks pid $child_pid" sleep 3 kill -- -"$child_pid" # but it is wrong, get "No suc...

Admin

프로세스의 상위 프로세스가 하위 프로세스의 관점에서 의미가 있습니까?
process-groups

프로세스의 상위 프로세스가 하위 프로세스의 관점에서 의미가 있습니까?

POSIX에서 프로세스는 두 가지 기본 계층을 통해 서로 "관련"됩니다. 상위 및 하위 프로세스의 계층 구조입니다. 세션 및 프로세스 그룹의 계층 구조. setpgidsetsid사용자 프로세스는 후자 , via 및 Beyond를 통해 변경되지 않는 많은 제어 기능을 갖습니다 . 돌이켜보면 부모와 자식의 관계가 얼마나 중요한지 늘 궁금합니다. 지금까지 제가 이해한 내용을 요약하면 다음과 같습니다. 아이의 입장에서 보면 부모-자녀 관계는 당연히 중요합니다.부모다양한 시스템 호출(예: wait...

Admin

자체 프로세스 그룹에서 bash 스크립트를 시작하는 방법
process-groups

자체 프로세스 그룹에서 bash 스크립트를 시작하는 방법

다른 bash 스크립트에서 bash 스크립트를 시작하고 싶지만 터미널에서 실행하는 것처럼 자체 프로세스 그룹에서 시작합니다. 비슷한 질문이 여러 개 있는데 제 예와 일치하는 답변을 찾을 수 없습니다. 이 두 스크립트를 사용하세요 $ cat main.sh #! /usr/bin/env bash set -e echo if this has been started in its own group the following will pass ps -o ppid,pgid,command $$ ps -o pg...

Admin

프로세스 그룹 리더의 PID 재사용
process-groups

프로세스 그룹 리더의 PID 재사용

과거 진행 그룹 리더의 PID가 다른 프로세스에서 재사용되었고, 후자의 프로세스가 새로운 프로세스 그룹을 시작했을 가능성이 있습니까? 이 경우 생성된 첫 번째 프로세스 그룹과 두 번째 프로세스 그룹이 동일한 PGID를 가지게 되므로 이를 피해야 한다고 생각합니다. Linux는 유효한 PGID가 있는 PID 할당을 방지합니까? ...

Admin

중지된 프로세스가 포함된 새로운 고아 프로세스 그룹에 SIGHUP을 보내야 하는 이유는 무엇입니까?
process-groups

중지된 프로세스가 포함된 새로운 고아 프로세스 그룹에 SIGHUP을 보내야 하는 이유는 무엇입니까?

이것UNIX 환경의 고급 프로그래밍BOOK("APUE") 라고 자식 프로세스로 분기된 다음 종료되는 프로세스를 생각해 보세요. 이는 이상한 일이 아니지만(항상 발생함) 상위 프로세스가 종료될 때 하위 프로세스가 중지(작업 제어를 사용하여)되면 어떻게 됩니까? 그 아이는 어떻게 살아남을 것이며, 그 아이는 자신이 고아가 되었다는 사실을 알게 될까요? ... 프로세스 그룹이 분리되지 않은 경우 다른 프로세스 그룹에 있지만 동일한 세션에 있는 상위 프로세스 중 하나가 분리되지 않은...

Admin

기본적으로 커널은 고아가 되고 중지된 프로세스를 포함하는 프로세스 그룹에 SIGHUP을 보내 모든 프로세스를 종료합니까?
process-groups

기본적으로 커널은 고아가 되고 중지된 프로세스를 포함하는 프로세스 그룹에 SIGHUP을 보내 모든 프로세스를 종료합니까?

Linux 프로그래밍 인터페이스에서 격리된 프로세스 그룹이 중요한 이유를 이해하려면 셸 작업 제어 관점에서 사물을 살펴봐야 합니다. 그림 34-3을 기반으로 다음 시나리오를 고려하십시오. 상위 프로세스가 종료되기 전에 하위 프로세스가 중지됩니다(아마도 상위 프로세스가 중지 신호를 보냈기 때문일 수 있음). 상위 프로세스가 종료되면 쉘은 작업 목록에서 상위 프로세스의 프로세스 그룹을 제거합니다. 하위 프로세스는 init에 의해 채택되며 터미널의 백그라운드 프로세스가 됩니다. 하...

Admin

그룹 ID가 1인 하위 항목에 대해 waitpid 사용
process-groups

그룹 ID가 1인 하위 항목에 대해 waitpid 사용

많이 검색했지만 해결책을 찾지 못했습니다. 그러니 이것은 어리석은 질문일 수도 있다. waitpid의 형식은 다음과 같습니다. pid_t waitpid (pid_t pid, int *status, int options) pid 매개변수는 대기할 프로세스를 정확하게 지정합니다. 그 가치는 네 가지 캠프로 나뉩니다. < -1 Wait for any child process whose process group ID is equal to the absolute value of this valu...

Admin

하위 프로세스가 exec 함수 중 하나를 호출한 후 프로세스가 하위 프로세스 중 하나의 프로세스 그룹 ID를 변경할 수 없는 이유는 무엇입니까?
process-groups

하위 프로세스가 exec 함수 중 하나를 호출한 후 프로세스가 하위 프로세스 중 하나의 프로세스 그룹 ID를 변경할 수 없는 이유는 무엇입니까?

APUE에서: 프로세스는 자신 또는 하위 프로세스의 프로세스 그룹 ID만 설정할 수 있습니다. 또한 하위 프로세스는 exec 함수 중 하나를 호출한 후 하위 프로세스 중 하나의 프로세스 그룹 ID를 변경할 수 없습니다. 왜 "하위 프로세스가 exec 함수 중 하나를 호출한 후 하위 프로세스 중 하나의 프로세스 그룹 ID를 변경할" 수 없습니까? 감사해요. ...

Admin

`sudo setid 명령`이 새 프로세스 그룹을 생성하지 않습니까?
process-groups

`sudo setid 명령`이 새 프로세스 그룹을 생성하지 않습니까?

소프트웨어 테스트의 일부로 프로그램/명령을 실행하려는 시나리오를 생각하고 있습니다 sudo. 이러한 명령은 모듈 기반 Python 스크립트에서 실행됩니다 subprocess. 나는 슈퍼유저 권한으로 전체 테스트 스위트를 실행하지 않으려고 노력하고 있습니다. 이 예에서는 다음과 같이 가정합니다.top. 내 명령은 자체의 일부 하위 프로세스를 시작하고 교착 상태가 발생할 수 있습니다. 시간 초과 후 해당 항목(및 해당 하위 항목)을 종료하고 싶습니다. 확실한 해결책은 내 명령을 새로운 세션/프로세스 그...

Admin

프로세스 그룹 ID는 어떻게 설정되나요?
process-groups

프로세스 그룹 ID는 어떻게 설정되나요?

세션의 ID가 시스템 호출을 통해 세션을 생성한 프로세스의 pid와 동일하다고 읽었 setsid()으나 프로세스 그룹 ID를 설정하는 방법에 대한 정보를 찾지 못했습니다. 프로세스 그룹 ID는 프로세스 그룹을 생성한 프로세스의 pid와 동일합니까? ...

Admin

한 프로세스 그룹에서 다른 프로세스 그룹으로 프로세스를 이동하려면 어떻게 해야 하며, 각 프로세스 그룹의 프로세스를 어떻게 나열합니까?
process-groups

한 프로세스 그룹에서 다른 프로세스 그룹으로 프로세스를 이동하려면 어떻게 해야 하며, 각 프로세스 그룹의 프로세스를 어떻게 나열합니까?

지금까지 내가 알고 있는 바에 따르면, 터미널에는 하나의 세션만 있고, 세션에는 하나 이상의 프로세스 그룹이 있으며, 프로세스 그룹에는 하나 이상의 프로세스가 있습니다. 아래 이미지는 이를 보여줍니다. 두 가지 질문이 있습니다. 한 프로세스 그룹에서 다른 프로세스 그룹으로 프로세스를 이동하는 방법은 무엇입니까? 각 프로세스 그룹의 프로세스를 나열하는 방법은 무엇입니까? 편집하다:프로그래밍 방식이 아닌 터미널에서 이 두 가지 작업을 수행하는 방법을 의미합니다. ...

Admin

쉘이 프로그램을 실행 중인 경우 Ctrl+C를 누를 때 쉘도 SIGINT 신호를 수신합니까?
process-groups

쉘이 프로그램을 실행 중인 경우 Ctrl+C를 누를 때 쉘도 SIGINT 신호를 수신합니까?

Ctrl+C나는 당신이 누를 때 SIGINT그것을 읽었습니다포그라운드 프로세스 그룹. 이제 여기에 허용되는 답변이 있습니다.질문설명하다: 기본적으로 신호는 모든 포그라운드 프로세스(예: 셸 및 프로그램)에서 수신됩니다. cat내부에서 실행 bash해 보니 PGIDfor bash와 cat가 다르기 때문에 같은 프로세스 그룹에 속하지 않습니다. 그럼 를 누르면 신호 Ctrl+C만 cat들어오게 되는데 SIGINT(그래서 제가 인용한 답변은 틀렸습니다) 맞나요? ...

Admin

Ctrl+C가 SIGINT 신호를 여러 프로세스에 보낼 수 있습니까?
process-groups

Ctrl+C가 SIGINT 신호를 여러 프로세스에 보낼 수 있습니까?

Ctrl+를 누르면 C 신호가 SIGINT다음으로 전송된다는 것을 읽었습니다.포그라운드 프로세스 그룹. 이 작업을 수행하는 방법에 대한 예를 들어주실 수 있나요?포그라운드 프로세스 그룹Ctrl왜냐하면 +를 누르면 모든 프로세스가 종료되는지 확인하고 싶기 때문입니다 C. ...

Admin