github.com/jstaf/onedriver@v0.14.2-0.20240420231225-f07678f9e6ef/fs/signal_handlers.go (about)

     1  package fs
     2  
     3  import (
     4  	"os"
     5  	"strings"
     6  
     7  	"github.com/hanwen/go-fuse/v2/fuse"
     8  	"github.com/rs/zerolog/log"
     9  )
    10  
    11  // UnmountHandler should be used as goroutine that will handle sigint then exit gracefully
    12  func UnmountHandler(signal <-chan os.Signal, server *fuse.Server) {
    13  	sig := <-signal // block until signal
    14  	log.Info().Str("signal", strings.ToUpper(sig.String())).
    15  		Msg("Signal received, unmounting filesystem.")
    16  
    17  	err := server.Unmount()
    18  	if err != nil {
    19  		log.Error().Err(err).Msg("Failed to unmount filesystem cleanly! " +
    20  			"Run \"fusermount3 -uz /MOUNTPOINT/GOES/HERE\" to unmount.")
    21  	}
    22  
    23  	os.Exit(128)
    24  }