Creating Processes
- To create a new process, we often use the fork()system call in C or similar functions in other programming languages. This function creates a new child process that is an identical copy of the parent process.
Example in C:
#include <stdio.h> #include <unistd.h> 
int main() {      pid_t child_pid; child_pid = fork(); 
     // Create a new process 
     if (child_pid == 0) 
     { // This code is executed by the child process 
          printf("Child process: PID=%d\n", getpid()); 
     } 
     else if (child_pid > 0) 
     { // This code is executed by the parent process 
          printf("Parent process: PID=%d, Child PID=%d\n", getpid(), child_pid); 
     } 
     else 
     { // fork() failed 
          fprintf(stderr, "Fork failed.\n"); 
          return 1; 
     } 
     return 0; 
}Terminating Processes
- Processes can terminate naturally when they reach the end of their code. However, they can also be terminated manually using the killcommand or by sending a specific signal.
Example:
# Terminate a process by PID kill <PID> 
# Send SIGTERM (termination) signal to a process kill -15 <PID> 
# Send SIGKILL (forceful termination) signal to a process kill -9 <PID>Monitoring Processes
- Use the topcommand to monitor active processes and their resource usage.
topListing Processes (ps command)
- The pscommand provides information about running processes.
ps -efProcess Priority and Scheduling
- You can use the niceandrenicecommands to adjust process priority.
# Launch a process with a specific priority (niceness) nice -n <priority> <command> 
# Change the priority of an existing process renice <priority> -p <PID>Process Resource Limits
- You can set resource limits for a process using the ulimitcommand.
ulimit -n 100 # Set the maximum number of open file descriptors to 100Engaging Example:
Let’s create a practical scenario:
Suppose you’re running a server program that you want to execute at a higher priority. You’ll launch it with nice and then monitor it using top. If needed, you can adjust its priority using renice.
Example:
# Launch a server with higher priority nice -n -10 ./my_server 
# Monitor processes including your server top 
# If needed, adjust the priority of your server renice -n -5 -p <server_PID>This example provides hands-on experience in creating, monitoring, and managing processes with priority adjustments. It helps learners understand how to control process behavior and resource allocation.
