gpt4 book ai didi

c - linux,write()系统调用在尝试写入文件时返回-1

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:15 27 4
gpt4 key购买 nike

在下面的程序中,write() 在写入文件时返回 -1。

   #include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main() {

int fd_r=0,fd_w=0;
int w_ret=100;
fd_r = open("reader.txt", O_RDONLY);

fd_w = open("writer.txt",O_CREAT,S_IRWXU);

char *buf = (char *)malloc(50);

while(read(fd_r,buf,30))
{

w_ret = write(fd_w,buf,30);
printf("%d", w_ret);
}
}

问题:我无法调试为什么会发生这种情况。非常感谢对代码的更正以及有关如何调试此类问题的建议

最佳答案

我不相信 O_CREAT 本身对标志有效:试试 O_CREAT | O_WRONLY.

一种调试方法是在您第一次打开 fd_w 文件描述符时检查它是否有效。

“参数 flags 是 O_RDONLY、O_WRONLY 或 O_RDWR 之一,分别请求以只读、只写或读/写方式打开文件,与以下零个或多个按位或……” http://www.linuxmanpages.com/man2/open.2.php

关于c - linux,write()系统调用在尝试写入文件时返回-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3981488/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com