github.com/immortal/immortal@v0.0.0-20240201195854-d8073cd41019/watchpid_linux.go (about)

     1  // +build linux
     2  
     3  package immortal
     4  
     5  import (
     6  	"fmt"
     7  	"os"
     8  	"time"
     9  )
    10  
    11  // WatchPid check pid changes
    12  func (d *Daemon) WatchPid(pid int, ch chan<- error) {
    13  	if !d.IsRunning(pid) {
    14  		ch <- fmt.Errorf("PID NOT FOUND")
    15  		return
    16  	}
    17  
    18  	for {
    19  		if _, err := os.Stat(fmt.Sprintf("/proc/%d", pid)); err != nil {
    20  			ch <- fmt.Errorf("EXIT")
    21  			return
    22  		}
    23  		time.Sleep(time.Second)
    24  	}
    25  }