在下面的程序中,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);
}
}
Run Code Online (Sandbox Code Playgroud)
问题:我无法调试为什么会发生这种情况.关于如何调试此类问题的代码和建议的更正非常受欢迎
我不认为这O_CREAT对于旗帜本身是有效的:试试O_CREAT | O_WRONLY.
调试的一种方法是在第一次打开时检查fd_w文件描述符是否有效.
"参数标志是O_RDONLY,O_WRONLY或O_RDWR之一,它们分别以零或多个以下方式按位或按顺序打开文件只读,只写或读/写..." http:/ /www.linuxmanpages.com/man2/open.2.php
| 归档时间: |
|
| 查看次数: |
5449 次 |
| 最近记录: |