다음 위로 이전 목차 리눅스 프로그래머를 위한 가이드

10.1 소개 (Introduction)

리눅스 운영체제에 UNIX 응용프로그램을 포팅하는 것은 놀랄만큼 쉽다. 리눅스와 그것에 의해 사용되는 GNU C 라이브러리는 마음 속에 많은 응용프로그램들이 make라는 이슈(issue)에 의해 간단하게 컴파일될 수 있음을 의미하는 응용프로그램 호환성(portability)을 가지고 고안되어져 왔다. 일반적으로 특별한 구현이거나 문서화되지 않았거나 정의되지않은 행동들의 몇몇 모호한 특징을 사용하지 않는 것들을 특별한 시스템 호출이라 말한다.

리눅스는 대개 IEEE Std 1003.1-1988 (POSIX.1)에서 잘 수행지만, 실제로 그와같이 보증되지는 않았다. 똑같이 리눅스 또한 UNIX에서 걸러진 SVID와 BSD에서 발견되는 많은 특징들을 구현하지만, 모든 경우에 있어서 그것들에 집착할 필요는 없다. 대개, 리눅스는 다른 리눅스 구현들과 양립할 수 있고 응용프로그램의 포팅을 쉽게 할 수 있도록 고안되어왔고, 많은 예에서 그러한 구현들 안에서 발경할 수 있는 동작(behavior)을 수정하고 향상시켜왔다.

예제처럼, select 시스템 호출에 넘겨지는 timeout 아규먼트(argument)는 실제로 리눅스에 의해 poll operation을 수행하는 동안 감소되어진다. 다른 구현들은 이값을 전혀 수정하지 않고 이것을 기대하지 않고 있는 응용프로그램들은 리눅스에서 컴파일될 때 부서질 수 있다.select에 대한 BSD와 SunOS man 페이지는 "미래 구현(future implemetation)"에서 시스템 호출이 timeout 포인터를 수정할지 모른다고 경고하고 있다. 불행스럽게도, 많은 응용프로그램들은 여전히 그값이 변하지 않는다고 생각한다.

이글의 목표는 리눅스에 응용프로그램 포팅하기와 연관된 주요 이슈(issue)의 개요(overview)를 제공하는 것이다. 다음의 영역에서 리눅스,POSIX.1,SVID와 BSD간의 뚜렷한 차이를 보인다.: 신호처리(signal handling), 단말기 입출력(terminal I/O), 프로세스 통제(process control), 정보수집(information gathering), portable conditional compilation.


이전:10 리눅스에 응용프로그램 포팅하기 다음:10.2 신호 다루기 (Signal Handling)

Copyright (c) 1996,1997 by Euibeom.Hwang & SangEun.Oh All Rights Reserved

Email To:Webmaster , Another address
LAST UPDATE Dec 17,1997
Created Dec 17,1997