size_t와 ssize_t에 대해 알아보자.
man 명령어를 통해 살펴본 시스템 콜 함수 write()이다.
인자로 size_t 자료형 count를 갖고,
ssize_t 자료형의 값을 반환하는 것을 확인할 수 있다.
두 자료형은 무엇일까?
size_t 자료형은 ‘현 시스템이 한 번에 처리할 수 있는 최대 크기의 unsigned 정수 자료형’ 이고,
ssize_t 자료형은 ‘현 시스템이 한 번에 처리할 수 있는 최대 크기의 signed 정수 자료형’ 이다.
따라서 32비트 시스템에선 두 자료형의 크기는 4바이트이고
64비트 시스템에선 8바이트다.
64비트 우분투에서 다음과 같은 프로그램을 실행해 보았다.
#include <stdio.h>
int main()
{
printf("size_t: %ld\n", sizeof(size_t));
printf("ssize_t: %ld\n", sizeof(ssize_t));
return 0;
}
두 자료형은 /usr/lib/gcc/ … /include 디렉토리 내 stddef.h 파일에 정의돼 있다.
size_t 자료형은 long unsigned int = unsigned long 으로,
ssize_t 자료형은 long 으로 정의되어 있음을 확인할 수 있다.
이전사용자와 그룹