프로그래밍 언어/C_C++

[Tips] POSIX와 표준 C라이브러리

투칼론 2016. 3. 23. 19:37
반응형

JAVA 언어는 SUN(현재 ORACLE)에서 개발한 후, 버전 관리를 통합적으로 하고 있으르모, 표준 API에 대해 정리가 잘 되어있다. 최신 버전은 Java 8 버전이다. 이에 반해 C언어 및 C API는 유닉스/리눅스 플랫폼 간에 표준이 JAVA 언어에 비해 상대적으로 덜 정립된 느낌이다. C언어 표준 관련해서는 POSIX, ANSI/ISO 등이 있다.

C언어 표준인 POSIX와 ANSI/ISO에 대해 비교하고자 한다. 



POSIX는 Portable Operating System Interface for UniX의 약어이다. POSIX는 다양한 UNIX와 LINUX를 위해 표준화된 API를 제공한다.


POSIX는 스레드(Thread), 세마포어(Semaphore), 파일 시스템 접근 API 등 많

은 API를 포함한다. 반면에 표준 C 라이브러리(ANSI/ISO 포함)는 적은 API를 제공한다. 스레드, IPC(Inter Process Communication) 등도 포함하지 않고 있다.


ANSI/ISO는 아래와 같은 24개 정도의 헤더파일을 포함하고 있을 뿐이다:


<assert.h>  <complex.h>  <ctype.h>  <errno.h>  <fenv.h>

<float.h>  <inttypes.h>  <iso646.h>  <limits.h>  <locale.h>

<math.h>  <setjmp.h>  <signal.h>  <stdarg.h>  <stdbool.h>

<stddef.h>  <stdint.h>  <stdio.h>  <stdlib.h>  <string.h>

<tgmath.h>  <time.h>  <whcar.h>  <wctype.h>




POSIX는 위의 ANSI/ISO 표준 헤더 파일도 포함하고, 추가로 아래와 같은 헤더파일 및 API를 포함한다.

<aio.h>  <arpa/inet.h>  <assert.h>  <ctype.h>  <dirent.h>
<dlfcn.h>  <fcntl.h>  <fmtmsg.h>  <fnmatch.h>  <ftw.h>
<glob.h>  <grp.h>  <iconv.h>  <langinfo.h>  <libgen.h>
<monetary.h>  <mqueue.h>  <ndbm.h>  <net/if.h>  <netdb.h>
<netinet/in.h>  <netinet/tcp.h>  <nl_types.h>  <poll.h>  <pthread.h>
<pwd.h>  <regex.h>  <sched.h>  <search.h>  <semaphore.h>
<spawn.h>  <strings.h>  <stropts.h>  <sys/ipc.h>  <sys/mman.h>
<sys/msg.h>  <sys/resource.h>  <sys/select.h>  <sys/sem.h>  <sys/shm.h>
<sys/socket.h>  <sys/stat.h>  <sys/statvfs.h>  <sys/time.h>  <sys/times.h>
<sys/types.h>  <sys/uio.h>  <sys/un.h>  <sys/utsname.h>  <sys/wait.h>
<syslog.h>  <tar.h>  <termios.h>  <trace.h>  <ulimit.h>
<unistd.h>  <utime.h>  <utmpx.h>  <wordexp.h>

참고로, 아래 사이트에서 POSIX에서 정의한 함수 및 인자를 검색하여 확인할 수 있다.


http://pubs.opengroup.org/onlinepubs/9699919799/