我有一些代码可以从文件复制到 tcp 套接字(如 ftp 服务器),并且希望能够在需要时中止此副本。
我只是使用 io.CopyN(socket, file, size) 并且看不到发出中止信号的方法。有任何想法吗?
关闭输入文件怎么样? io.CopyN然后将返回错误并中止。
这里是一个演示(如果不是在Linux上运行的变化/dev/zero和/dev/null您的操作系统相当于!)
package main
import (
"fmt"
"io"
"log"
"os"
"time"
)
func main() {
in, err := os.Open("/dev/zero")
if err != nil {
log.Fatal(err)
}
out, err := os.Create("/dev/null")
if err != nil {
log.Fatal(err)
}
go func() {
time.Sleep(time.Second)
in.Close()
}()
written, err := io.CopyN(out, in, 1E12)
fmt.Printf("%d bytes written with error %s\n", written, err)
}
Run Code Online (Sandbox Code Playgroud)
运行时它会打印类似的东西
9756147712 bytes written with error read /dev/zero: bad file descriptor
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
909 次 |
| 最近记录: |