본문 바로가기
운영체제

[운영체제] 윈도우에서 unistd.h fork() 함수 사용하기

by 아임코딩 2024. 4. 30.
728x90
반응형

안녕하세요 아임코딩입니다.

이번에는 운영체제에서 등장하는 프로세스 관련 함수 중 하나인 fork() 함수에 대해서 알아보고 사용해보도록 하겠습니다.

fork() 함수는 현재 실행중인 프로세스를 그대로 복사하여 새로운 프로세스를 만드는 함수입니다.

즉, 해당 프로세스의 복사본이 만들어져 똑같은 프로세스가 두 개가 실행되는 것이죠.

 

윈도우에서 unistd.h 사용하기

윈도우 C언어로 fork() 함수를 사용해보려고 했는데, visual studio 에서는 불가능한 것 같았습니다.

fork() 함수를 사용하려면 <unistd.h> 에 저장되어있는 fork() 함수를 사용해야 하는데, 이 헤더가 visual studio에서는 작동하지 않았습니다.

그래서 구글링을 해보니 리눅스 환경에서 사용해야 <unistd.h> 를 사용할 수 있다고 하더랍니다..!

잘은 모르겠지만 

https://blog.naver.com/datarget/222184659459

 

Cygwin 설치 방법

안녕하세요~ IT 엔지니어 데이타겟 (DATARGET)입니다. Cygwin(시그윈)은 윈도우에서 Linux와 ...

blog.naver.com

이 블로그에서 Cygwin 설치하는 방법대로 따라하니 윈도우 환경에서 리눅스 환경을 사용할 수 있었습니다.

MinGw 도 된다고 하던데 저는 안됐었습니다...

 

Cygwin 사용하기

그렇게 Cygwin 을 설치한 후 실행을 해보았더니, 이렇게 리눅스 환경을 사용할 수 있었습니다.

 

리눅스 환경에서는

vi 명령어를 이용한 C파일 수정

vi 명령어를 이용하여 c언어 파일을 만들 수 있습니다.

 

프로그램 코드

vi 명령어를 통해 fork() 를 사용해보기 위한 간단한 코드를 작성하였습니다.

#include <stdio.h>
#include <unistd.h>
int main(void) {
	printf("X\n");
	fork();
	printf("Y\n");
	fork();
	printf("Z\n");
	return 0;
}

 

이렇게 c파일을 만들고 나면 리눅스 환경에서는 컴파일을 해주어야 합니다.

 

컴파일 및 실행

컴파일을 하는 방법은

gcc 파일이름

저의 c파일 이름은 hello.c 이기 때문에 gcc hello.c 를 입력해주었습니다.

컴파일이 잘 수행되면, 자동으로 실행파일이 만들어집니다.

실행파일은 a.exe로 만들어지는데, 이를 실행하려면 명령어로 ./a.exe 를 입력해주면 됩니다.

 

X는 1개, Y는 2개, Z는 4개가 출력이 되는 것을 확인할 수 있습니다.

fork() 함수를 통해 프로세스가 만들어져서 Y는 두 개의 프로세스가 출력을 하기 때문에 두 개가 출력이 되었고,

Z는 Y 앞에서 만들어진 총 두 개의 프로세스가 각자 두 개씩 만들어져서 총 네 개의 프로세스가 Z를 출력한 것을 확인할 수 있습니다.

 

정리 

fork() 함수를 이용하면 프로세스를 복사해 사용할 수 있습니다.

728x90
반응형

'운영체제' 카테고리의 다른 글

[운영체제] 프로세스란?  (1) 2024.04.30
[운영체제] 폰 노이만 구조란?  (0) 2024.04.30