c - C — 为什么 «write» 不能写入文件?
问题描述
我想处理write
:为什么它不写入文件(errno 9,EBADF: Bad file descriptor
),虽然如果你用 替换fdOut
,1
那么一切都完美地显示在屏幕上?
#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
int main (void)
{
int fdOut;
char *outFileName = "out";
char sample[7] ="sample\0";
fdOut = open (outFileName, O_CREAT, 0777);
if (fdOut == -1)
printf ("ups, errno %d\n", errno);
else
{
write (fdOut, sample, 7);
write (fdOut, "\n", 1);
}
close (fdOut);
printf ("%s", sample);
return (0);
}
解决方案
open
查看(例如此处)的文档,我们看到:
参数标志必须包括以下访问模式之一:
O_RDONLY
、、O_WRONLY
或O_RDWR
。这些请求分别以只读、只写或读/写方式打开文件。
O_WRONLY
在这种情况下可以安全地假设您想要:
fdOut = open (outFileName, O_CREAT | O_WRONLY, 0777);
您可能还想查看O_TRUNC
文件确实存在的情况。
推荐阅读
- exact-online - itgendch033:后备数据库需要 Invantive Data Replicator 将“ExactOnlineXML.XML.SubscriptionLines”的列数限制为 1,000
- postgresql - 如何使用 PSQL 运行和自动创建数据库
- php - PHP 正则表达式接受日语和英语语言
- python - 在 pandas DataFrame 的每一列中查找第一个非零值
- javascript - MomentJS - 显示现在/明天而不是今天/明天的日期
- javascript - 如何处理一组控件的 2 个可能的选项卡索引值?
- r - 根据 groupby 过滤天数
- python - Python NLP 中的 lambda 演算三元组
- python - 如何从 tkinter 获取数据并将其添加到海龟中?
- node.js - 在 Mocha 开始所有测试之前发出请求