不是新写入了数据吗,新的日志
因为parse没有循环接收,第二次的rc和wc就断开了,parse线程死掉
有新数据来的时候,会通过监听的通道将数据送入Process协程,处理完又通过另一通道将处理好的数据送入Write协程,各协程均准备就绪,通道处于监听状态
file, e := os.OpenFile(r.path, os.O_WRONLY|os.O_APPEND, os.ModePerm)
改为:
file, e := os.Open(r.path)
if err != io.EOF 改为: if err == io.EOF
Iterm2
r初始化时的那个string就是文件的路径。
在那儿可以对文件名及其路径进行修改,但要在对应路径下放入相应的文件,否则在用os.open打开文件时会报错(文件不存在)
因为在读取文件时,一开始就移到了最后,所以要有新内容添加时才会有内容被打印出来
可以手动打开log文件添加内容,也可以用cmd中的echo命令行来写入内容
老铁,你和我想的一样···
但是当我按照我想的操作之后,发现一个问题:
因为要处理输出换行问题,所以输入data的那里,需要转换成slice;string()强转,不支持slice
已经解决了,谢谢
视频中这样是不行的,因为这里在goroutine中打开了文件句柄,相当于每个goroutine中的单独维护了指针位置,不过这样读取读取文件效率极高,通常不会存在瓶颈。非要使用多个goroutine去读取的话,可以将读取模块中的rd放到全局变量中,不过bufio包貌似不是线程安全的,也会存在问题。
我这里正常,具体报什么错?把错误信息贴出来呗。