我已经创建了一个命令行应用程序,我在其中压缩文件夹并在本地服务器上共享以供其他人下载.我想要做的是在关闭服务器后立即删除压缩文件夹的副本.这是我的代码:

func main() {
    //flag to specify whether we will be uploading folder or a single file
    zipped := flag.bool("z",false,"Use for zipping folders and serving them as a single file on the server.(deletes the zipped file once the server closes.)")
    save := flag.bool("s","Use with -z for saving the zipped files locally even after the server closes.")
    flag.Parse()


    if len(flag.Args())>0{

        if *zipped{
            fmt.Println("zipping...")
            flag.Args()[0]=ZipFile()

            if !(*savE){
              //I expect this to remove the file when I hit ctrl+c on cmd  
              defer os.Remove(flag.Args()[0])   
                 }
        }
        http.HandleFunc("/",ShareFilE)
        fmt.Printf("Sharing file on %s:8080\n",GetOutboundIP())

        log.Fatal(http.ListenAndServe(":8080",nil))
    }else{
        fmt.Println("Invalid usage. No file mentioned. Use wshare -h for Help.")
    }

}

当我按下ctrl-c时,程序退出并且main函数关闭,因此,不应该执行os.Remove(xyz)吗? A tour of go说,defer在函数返回时执行表达式.在这里,我觉得主要没有得到任何回报的机会.

什么是解决方法来实现我想要做的事情?我有一些解决方案,比如等待按键等,但我希望这个程序非常简单,所以有没有办法在服务器关闭/程序退出时立即删除文件而不需要我的任何进一步输入?