golang bad file descriptor问题的解决方法
作者:benben_2015 时间:2024-05-09 09:31:42
发现问题
在golang中,对文件进行写操作时出现上面的错误。首先复现下这个问题。
package main
import (
"os"
"fmt"
)
func main() {
file, err := os.Open("a.txt")
if err != nil {
fmt.Println(err)
}
defer file.Close()
content:=[]byte("Go is an open source programing language that makes it easy to build simple,reliable,and efficient software")
_, err = file.Write(content)
if err != nil {
fmt.Println(err)
}
}
此时运行就会出现错误write a.txt: bad file descriptor
。这是什么原因呢?其实这和os.Open()
函数有关,下面了解下Open()函数。
func Open(name string) (*File,error) {
return OpenFile(name, O_RDONLY, 0)
}
可以看出来,Open函数打开文件的默认方式是只读,所以当你要对打开的文件进行写操作时,是不被允许的。OpenFile函数的第二个传入参数的值可以是:
参数名 含义
O_RDONLY 打开只读文件
O_WRONLY 打开只写文件
O_RDWR 打开既可以读取又可以写入文件
O_APPEND 写入文件时将数据追加到文件尾部
O_CREATE 如果文件不存在,则创建一个新的文件
O_EXCL 文件必须不存在,然后会创建一个新的文件
O_SYNC 打开同步I/0
O_TRUNC 文件打开时可以截断
解决方法
现在知道原因,解决方法只要改变文件读取的方式就行。如下例:
package main
import (
"os"
"fmt"
)
func main() {
file, err := os.OpenFile("a.txt", os.O_APPEND|os.O_WRONLY, os.ModeAppend)
if err != nil {
fmt.Println(err)
}
defer file.Close()
content:=[]byte("Go is an open source programing language that makes it easy to build simple,reliable,and efficient software")
_, err = file.Write(content)
if err != nil {
fmt.Println(err)
}
}
来源:https://blog.csdn.net/benben_2015/article/details/80607425
标签:bad,file,descriptor
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
教你轻松了解MySQL数据库中的结果字符串
2009-02-23 17:29:00
python MultipartEncoder传输zip文件实例
2022-04-20 07:22:57
jupyter notebook 添加kernel permission denied的操作
2021-07-06 19:49:14
微信 java 实现js-sdk 图片上传下载完整流程
2024-04-29 14:08:03
浅谈function(函数)中的动态参数
2023-08-11 10:23:59
python中ASCII码和字符的转换方法
2021-04-06 13:22:04
python实现支付宝当面付(扫码支付)功能
2023-04-01 21:38:45
python基础之模块的导入
2023-10-24 05:44:11
![](https://img.aspxhome.com/file/2023/5/103655_0s.jpg)
Pytest+Yaml+Excel 接口自动化测试框架的实现示例
2023-01-07 05:48:17
![](https://img.aspxhome.com/file/2023/7/70707_0s.png)
MySQL无法创建外键的原因及解决方法
2024-01-17 00:00:07
基于laravel缓冲cache的用法详解
2024-05-11 10:07:55
python简单利用字典破解zip文件口令
2023-06-27 05:36:31
![](https://img.aspxhome.com/file/2023/4/133304_0s.png)
python pymysql链接数据库查询结果转为Dataframe实例
2024-01-16 22:07:29
Python数字图像处理基础直方图详解
2021-02-12 08:21:55
![](https://img.aspxhome.com/file/2023/9/124339_0s.png)
numpy中np.dstack()、np.hstack()、np.vstack()用法
2021-08-27 11:47:42
django 做 migrate 时 表已存在的处理方法
2022-02-14 16:11:53
Django查询数据库的性能优化示例代码
2024-01-22 22:18:48
![](https://img.aspxhome.com/file/2023/7/112597_0s.png)
Python判断某个用户对某个文件的权限
2023-12-15 01:25:27
用C#对ADO.NET数据库完成简单操作的方法
2024-01-15 09:12:58
Django实现自定义404,500页面教程
2021-06-20 06:23:07