How to use the command 'setsid' (with examples)
- Linux
- December 25, 2023
The ‘setsid’ command is used to run a program in a new session, and it has various use cases that can be helpful in different scenarios. It allows you to run a program in a new session, discard the output and error, create a new process, return the exit code of the program as the exit code of ‘setsid’, and set the current terminal as the controlling terminal. This article will illustrate each of these use cases with examples.
Use case 1: Run a program in a new session
Code:
setsid program
Motivation: This use case is useful when you want to run a program in a new session. Running the program in a new session can provide a fresh environment and avoid interference from the current session or terminal.
Explanation: The command ‘setsid’ is used to start a program in a new session. The ‘program’ argument should be replaced with the actual program you want to run.
Example output: Running ‘setsid program’ will launch the specified program in a new session.
Use case 2: Run a program in a new session discarding the resulting output and error
Code:
setsid program > /dev/null 2>&1
Motivation: There may be situations where you want to run a program in a new session but don’t need to see the output or error messages. Discarding the output and error can keep the terminal clean and clutter-free.
Explanation: The command ‘setsid program > /dev/null 2>&1’ redirects the standard output and error of the program to ‘/dev/null’, which discards the data. The ‘program’ argument should be replaced with the actual program you want to run.
Example output: Running ‘setsid program > /dev/null 2>&1’ will launch the specified program in a new session, and the output and error messages will not be displayed.
Use case 3: Run a program creating a new process
Code:
setsid --fork program
Motivation: In certain situations, you may need to create a new process when running a program. This can be helpful if you want to separate the execution of the program from the current process.
Explanation: The command ‘setsid –fork program’ starts a program in a new session and creates a new process. The ‘program’ argument should be replaced with the actual program you want to run.
Example output: Running ‘setsid –fork program’ will start the specified program in a new session, and a new process will be created for its execution.
Use case 4: Return the exit code of a program as the exit code of setsid when the program exits
Code:
setsid --wait program
Motivation: Sometimes, you may want to use the exit code of a program as the exit code for the ‘setsid’ command. This can be useful when you need to perform actions based on the success or failure of the program.
Explanation: The command ‘setsid –wait program’ waits for the specified program to exit and returns its exit code. The ‘program’ argument should be replaced with the actual program you want to run.
Example output: Running ‘setsid –wait program’ will wait for the specified program to exit and return its exit code as the exit code of the ‘setsid’ command.
Use case 5: Run a program in a new session setting the current terminal as the controlling terminal
Code:
setsid --ctty program
Motivation: Setting the current terminal as the controlling terminal can be useful when you want to run a program in a new session with the ability to interact with the terminal.
Explanation: The command ‘setsid –ctty program’ starts a program in a new session, and the current terminal becomes the controlling terminal for that session. The ‘program’ argument should be replaced with the actual program you want to run.
Example output: Running ‘setsid –ctty program’ will launch the specified program in a new session, and the current terminal will become the controlling terminal for that session.
Conclusion:
The ‘setsid’ command provides various use cases to run a program in a new session and manipulate its execution. It can be used to create a fresh environment, discard output and error messages, create a new process, return exit codes, and set the controlling terminal. Understanding these use cases can help you utilize the ‘setsid’ command efficiently in different scenarios.