#!/bin/bash set -e echo "=== Process Creation & Monitoring ===" echo echo "# Starting two background processes..." echo "ping -i 1 127.0.0.1 > /dev/null &" ping -i 1 127.0.0.1 > /dev/null & PING_PID=$! echo "sleep 60 &" sleep 60 & SLEEP_PID=$! echo echo "# Listing running processes (ps -ef | grep -E 'ping|sleep' | grep -v grep)" ps -ef | grep -E "ping|sleep" | grep -v grep echo echo "=== Process Communication (Pipe Example) ===" echo echo "# ls -l | grep .sh" ls -l | grep .sh || echo "No .sh files found" echo echo "=== Signal Handling ===" echo echo "# Showing process IDs" echo "PING PID: $PING_PID" echo "SLEEP PID: $SLEEP_PID" echo echo "# Sending SIGSTOP to ping process (pause it)" echo "kill -SIGSTOP $PING_PID" kill -SIGSTOP $PING_PID sleep 2 echo "# Checking stopped process with ps" ps -o pid,stat,cmd -p $PING_PID echo echo "# Sending SIGCONT to ping process (resume it)" echo "kill -SIGCONT $PING_PID" kill -SIGCONT $PING_PID sleep 2 echo "# Sending SIGKILL to ping process (force kill)" echo "kill -SIGKILL $PING_PID" kill -SIGKILL $PING_PID sleep 2 echo echo "# Stopping all remaining demo processes" echo "kill $SLEEP_PID" kill $SLEEP_PID 2>/dev/null || true echo echo "=== Demonstration Complete ===" echo echo "Summary of signals used:" echo " - SIGSTOP: Stops (pauses) a process." echo " - SIGCONT: Continues a stopped process." echo " - SIGKILL: Immediately kills a process (cannot be caught or ignored)."