본문 바로가기

분류 전체보기252

프로세스 간의 통신 방법 1- 파이프 이용 프로세스간에는 공유되는 메모리가 없어서 메모리로 통신을 하기를 힘들다.그래서 커널에 파이프 생성을 요구하고, 요구해서 얻은 입출력 파일 디스크립터를이용하여 프로세스 간의 통신을 한다. unitsd.hint pipe(int fd[2]); 리턴값 -1: 실패 0: 성공인자: 정수형 배열 인자 2개를 같는 포인터 여기에서 fd를 인자로 전달하면 fd[0]은 출력할 수 있는 파일 디스크립터를, fd[1]에는 입력할수 있는 파일 디스크립터를 얻는다. fd[0]은 출력이지만 프로그램 상에서는 입력을 의미,fd[1]은 입력이지만 프로그램 상에서는 출력을 의미한다. 파이프는 프로세스에 종속되지 않는다. 이말은 프로그램 상에서 pipe함수를 사용하여 파이트를 생성하는 경우 이것은 프로세스 내에 존재 하는 것이 아니라 커.. 2007. 3. 17.
int dup2(int fildes, int fildes2) #include int dup2(int fildes, int fildes2) fildes2가 열려 있다면 fildes2 항목을 닫고 fildes항목을 fildes2로 복사한다. int main(){ .... fd = open("my.file", CREATE_FLAGS, CREATE_MODE); .... if(dup2(fd, STDOUT_FILENO) == -1) { .... }} dup2 함수는 두 번째 매개변수(표준출력)에 해당하는 디스크립터를 닫고첫번째 매개변수(fd)를 두 번째 매개변수(STDOUT_FILENO)에 해당하는 항목에 복사한다. open호출 후,[0] 표준 입력[1] 표준 출력[2] 표준 에러[3] my.file에 쓰기 dup2 호출 후[0] 표준 입력[1] my.file에 쓰기[2] .. 2007. 3. 17.
재귀함수 9. 재귀적 용법 재귀적 용법은 수학에서 무한한 값을 유한하게 표현하기 위한 재귀적 수식으로부터 유래한 것으로서 의미와 표현방법에 있어서 동일하다.예를 들면 수학에서 양의 정수를 모두 표현할 수 없으나, 재귀적 함수식을 사용하면 값을 모두 정의할 수 있다. n=0 ⇒ f(n)=0 n=1 ⇒ f(n)=1 n>1 ⇒ f(n)=f(n-1)+1 재귀적 함수식을 사용하는 또 다른 예로 n에 대한 factorial 값은 다음과 같이 재귀적으로 정의할 수 있다. n=0 ⇒ fac(n)=1 n=1 ⇒ fac(n)=1 n>1 ⇒ fac(n)=n * fac(n-1) 재귀적 표현을 그대로 프로그래밍 언어로 표현한 것이 소위 재귀적 함수(recursive function)이다. 프로그래밍 언어에서 재귀적 함수는 두 가지 방법.. 2007. 3. 15.
하노이의 탑 하노이탑 문제(Hanoi Tower Problem) 1883년프랑스 수학자Edouard Lucas가 제시한 다음과 같은하노이 탑 문제 (Hanoi Tower Problem)를 생각하여 봅시다. Vietnam의 Hanoi시 외곽에 있는 Benares사원의 한가운데있는 Dome에 다음과 같은 전설이 쓰여져 있는 동판이 있다. 동판에 다이아몬드막대가 세 개 있고, 크기가 서로다른 64개의 황금 원판이 한 막대에 꽂혀 있다. 이때, 다음과 같은 규칙으로 황금 원판을 다른 막대로모두 옮기는 놀이를 신(God)이 하고 있다. (1) 한 번에 한 개의 황금 원판만을 옮긴다.(2) 크기가 큰 황금 원판은 반드시 크기가 작은 황금 원판 아래쪽에 있어야 한다.그러면 신이 이 놀이를 다 마칠 때면 (즉, 황금 원판이다른 막.. 2007. 3. 13.