`没有这样的文件或目录` `os.Remove` 在 go 例程中
`no such file or directory` with `os.Remove` inside go routine
我使用 Cobra 框架向我的 CLI 应用程序添加了一个新命令。该命令应该启动接受套接字连接的 TCP 服务器。它接收一个有效负载,该有效负载是 file/directory 的 absolute
路径,并尝试删除它。这是命令的代码
package cmd
import (
"bufio"
"fmt"
"net"
"os"
"github.com/spf13/cobra"
"wpgenius.io/util"
)
var cachePurgerCmd = &cobra.Command{
Use: "cache-purger",
Short: "Listen for request to purge NGINX page cache",
Run: func(cmd *cobra.Command, args []string) {
dstream, err := net.Listen("tcp", ":9876")
if err != nil {
util.HandleError(err, "Can not start listener..")
return
}
fmt.Println("Listening for purge requests...")
defer dstream.Close()
for {
con, err := dstream.Accept()
if err != nil {
util.HandleError(err, "Can not accept connection")
os.Exit(1)
}
go handleRequest(con)
}
},
}
func handleRequest(con net.Conn) {
path, err := bufio.NewReader(con).ReadString('\n')
if err != nil {
return
}
defer con.Close()
err = os.Remove(path)
if err != nil {
con.Write([]byte("ERROR"))
fmt.Println(err)
util.HandleError(err, "Can not delete cache file")
return
}
con.Write([]byte("SUCCESS"))
}
func init() {
rootCmd.AddCommand(cachePurgerCmd)
}
虽然 file/directory 存在,但我仍然得到 no such file or directory
错误。
我通过简单地将 os.Remove
添加到 main
函数来进行完整性检查,以确保它与路径无关,我可以看到它成功删除了 file/directory.
我不确定它是否与 go routing
或 tcp server
!
有关
非常感谢任何帮助!
我猜你输入的路径中有\n这个点。
我使用 Cobra 框架向我的 CLI 应用程序添加了一个新命令。该命令应该启动接受套接字连接的 TCP 服务器。它接收一个有效负载,该有效负载是 file/directory 的 absolute
路径,并尝试删除它。这是命令的代码
package cmd
import (
"bufio"
"fmt"
"net"
"os"
"github.com/spf13/cobra"
"wpgenius.io/util"
)
var cachePurgerCmd = &cobra.Command{
Use: "cache-purger",
Short: "Listen for request to purge NGINX page cache",
Run: func(cmd *cobra.Command, args []string) {
dstream, err := net.Listen("tcp", ":9876")
if err != nil {
util.HandleError(err, "Can not start listener..")
return
}
fmt.Println("Listening for purge requests...")
defer dstream.Close()
for {
con, err := dstream.Accept()
if err != nil {
util.HandleError(err, "Can not accept connection")
os.Exit(1)
}
go handleRequest(con)
}
},
}
func handleRequest(con net.Conn) {
path, err := bufio.NewReader(con).ReadString('\n')
if err != nil {
return
}
defer con.Close()
err = os.Remove(path)
if err != nil {
con.Write([]byte("ERROR"))
fmt.Println(err)
util.HandleError(err, "Can not delete cache file")
return
}
con.Write([]byte("SUCCESS"))
}
func init() {
rootCmd.AddCommand(cachePurgerCmd)
}
虽然 file/directory 存在,但我仍然得到 no such file or directory
错误。
我通过简单地将 os.Remove
添加到 main
函数来进行完整性检查,以确保它与路径无关,我可以看到它成功删除了 file/directory.
我不确定它是否与 go routing
或 tcp server
!
非常感谢任何帮助!
我猜你输入的路径中有\n这个点。