[파이썬] subprocess `subprocess.CREATE_NEW_PROCESS_GROUP`: 새 프로세스 그룹 생성

Creating a new process group can be useful in scenarios where you need to manage a group of related processes collectively. By creating a new process group, you can send signals to all processes in the group simultaneously, terminate them together, or perform other group-level operations.

To create a new process group using subprocess, you can use the preexec_fn parameter in the Popen constructor. The preexec_fn allows you to set up the child process before it is executed. In this case, you can use the os.setsid() function to start a new session and create a new process group.

Here’s an example code snippet that demonstrates how to create a new process group using subprocess in Python:

import subprocess
import os

# Create a new process group
new_group_flag = subprocess.CREATE_NEW_PROCESS_GROUP

# Spawn a new process and set up the process group
process = subprocess.Popen(['command', 'args'], preexec_fn=os.setsid, creationflags=new_group_flag)

# Use the created process group
os.killpg(os.getpgid(process.pid), signal.SIGTERM)

In this example, the subprocess.CREATE_NEW_PROCESS_GROUP flag is used to indicate that a new process group should be created. The Popen constructor is used to spawn a new process with the specified command and arguments. The preexec_fn=os.setsid sets up the child process to start a new session and create a new process group.

Later in the code, the os.killpg() function is used to send a signal (in this case, signal.SIGTERM) to the process group associated with the process. This allows you to perform group-level operations such as terminating all processes in the group.

By utilizing the subprocess.CREATE_NEW_PROCESS_GROUP flag and the appropriate functions from the os module, you can easily create and manage a new process group in Python. This can be useful in scenarios where you need to control a group of processes collectively.