mirror of
				https://github.com/gravitl/netmaker.git
				synced 2025-10-31 12:16:29 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package ncutils
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"os"
 | |
| 	"strconv"
 | |
| )
 | |
| 
 | |
| // PIDFILE - path/name of pid file
 | |
| const PIDFILE = "/var/run/netclient.pid"
 | |
| 
 | |
| // WindowsPIDError - error returned from pid function on windows
 | |
| type WindowsPIDError struct{}
 | |
| 
 | |
| // Error generates error for windows os
 | |
| func (*WindowsPIDError) Error() string {
 | |
| 	return "pid tracking not supported on windows"
 | |
| }
 | |
| 
 | |
| // SavePID - saves the pid of running program to disk
 | |
| func SavePID() error {
 | |
| 	if IsWindows() {
 | |
| 		return nil
 | |
| 	}
 | |
| 	pid := os.Getpid()
 | |
| 	if err := os.WriteFile(PIDFILE, []byte(fmt.Sprintf("%d", pid)), 0644); err != nil {
 | |
| 		return fmt.Errorf("could not write to pid file %w", err)
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // ReadPID - reads a previously saved pid from disk
 | |
| func ReadPID() (int, error) {
 | |
| 	if IsWindows() {
 | |
| 		return 0, nil
 | |
| 	}
 | |
| 	bytes, err := os.ReadFile(PIDFILE)
 | |
| 	if err != nil {
 | |
| 		return 0, fmt.Errorf("could not read pid file %w", err)
 | |
| 	}
 | |
| 	pid, err := strconv.Atoi(string(bytes))
 | |
| 	if err != nil {
 | |
| 		return 0, fmt.Errorf("pid file contents invalid %w", err)
 | |
| 	}
 | |
| 	return pid, nil
 | |
| }
 | 
