ez_writen函数
时间: 2024-05-13 18:19:57 浏览: 62
`ez_writen` 函数是一个封装了 `write` 系统调用的函数,用于向文件描述符写入指定数量的数据。下面是一个简单的 `ez_writen` 实现:
```c
#include <unistd.h>
ssize_t ez_writen(int fd, const void *buf, size_t n)
{
size_t nleft = n;
ssize_t nwritten;
const char *ptr = buf;
while (nleft > 0) {
if ((nwritten = write(fd, ptr, nleft)) < 0) {
if (nleft == n) {
return -1; /* error, return -1 */
} else {
break; /* error, return amount written so far */
}
} else if (nwritten == 0) {
break;
}
nleft -= nwritten;
ptr += nwritten;
}
return n - nleft; /* return >= 0 */
}
```
这个函数的实现使用了循环和指针算术运算来确保写入了指定数量的数据。函数返回值为实际写入的字节数,如果发生错误则返回 -1。
阅读全文