我想处理write
:为什么它不写一个文件(errno 9,EBADF: Bad file descriptor
),虽然如果你用1
代替fdOut
,那么一切都完美地显示在屏幕上?
#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
int main (void)
{
int fdOut;
char *outFileName = "out";
char sample[7] ="sample ";
fdOut = open (outFileName, O_CREAT, 0777);
if (fdOut == -1)
printf ("ups, errno %dn", 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
,以查找该文件存在的情况。