linux write的返回值
时间: 2023-10-02 11:09:50 浏览: 74
Linux write() 函数返回已经成功写入的字节数,如果返回值为负数则表示写入出现了错误。常见的错误码有:
- EINTR:写入操作被信号中断
- EAGAIN:写入操作被阻塞,需要重试
- EBADF:文件描述符无效
- EFAULT:缓冲区指针指向的内存地址无效
- EPIPE:写入到一个已经关闭的管道或套接字
如果返回值小于要求写入的字节数,需要根据实际情况进行处理,可能需要进行重试或者错误处理。
相关问题
linux mmap返回值
根据提供的引用内容,Linux中的mmap函数在成功执行时返回被映射区的指针,而在失败时返回MAP_FAILED(其值为(void *)-1),并且errno会被设置为相应的错误值。
以下是一个演示Linux mmap函数返回值的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>
int main() {
int fd = open("file.txt", O_RDWR);
if (fd == -1) {
perror("open");
exit(1);
}
off_t size = lseek(fd, 0, SEEK_END);
if (size == -1) {
perror("lseek");
exit(1);
}
void *ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
if (ptr == MAP_FAILED) {
perror("mmap");
exit(1);
}
printf("mmap successful. Pointer: %p\n", ptr);
if (close(fd) == -1) {
perror("close");
exit(1);
}
return 0;
}
```
linux socket connect read write 返回值为-1, 错误码分类详解
当使用 Linux socket 进行 connect、read、write 操作时,如果返回值为 -1,则表示出现了错误。此时可以通过 errno 变量来获得具体的错误码,可以根据错误码进行分类和处理。
以下是一些常见的错误码分类及其含义:
1. 连接错误:
- ECONNREFUSED:连接被对方拒绝。
- ETIMEDOUT:连接超时。
- ENETUNREACH:网络不可达。
- EHOSTUNREACH:主机不可达。
2. 读取错误:
- EAGAIN:非阻塞模式下没有数据可以读取。
- EINTR:操作被信号中断。
- EIO:IO 错误。
- EBADF:文件描述符无效。
3. 写入错误:
- EAGAIN:非阻塞模式下无法写入数据。
- EINTR:操作被信号中断。
- EIO:IO 错误。
- EBADF:文件描述符无效。
- ENOSPC:写入缓冲区已满。
以上仅是一些常见的错误码分类及其含义,实际使用中还需要根据具体的情况进行分类和处理。