$ man 2 write
WRITE(2)
NAME
write - write to a file descriptor 描述符
SYNOPSIS
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
size _t 为了增强程序的可移植性,便有了size_t ,不同系统上,定义size_t可能不一样
经测试发现,在32位系统中size_t是4字节的,在64位系统中,size_t是8字节的,这样利用该类型可以增加程序移植性。
size_t 的定义 以arm架构为例
include/linux/Types.h
#ifndef _SIZE_T
#define _SIZE_T
typedef __kernel_size_t size_t;
#endif
#ifndef _SSIZE_T
#define _SSIZE_T
typedef __kernel_ssize_t ssize_t;
#endif
include/asm-generic/Posix_types.h
/*
* Most 32 bit architectures use "unsigned int" size_t,
* and all 64 bit architectures use "unsigned long" size_t.
*/
#ifndef __kernel_size_t
#if __BITS_PER_LONG != 64
typedef unsigned int __kernel_size_t;
typedef int __kernel_ssize_t;
故size_t这个数据类型实际上是unsigned int
而ssize_t:这个数据类型通常用来表示可以被执行读写操作的数据块的大小.它和size_t类似,但是int型的