본문 바로가기
프로그래밍/Linux OS

Linux process fork 를 통한 프로그램 실행

by makepluscode 2022. 12. 14.
반응형

Linux 에서 fork 를 이용한 프로그램 실행

프로세스 fork 개념

(UNIX legacy system 인) Linux 는 새로운 프로세스 생성을 위한 방법으로 fork 인터페이스를 제공한다. 우리는 어떠한 조건에 의해서 프로그램A 또는 프로그램B 가 동적으로 실행되는 경우, fork()를 통해 새로운 프로세스를 생성하고 선택하여 실행할 수 있다.

fork 를 통한 프로세스 분기

프로세스 fork 구현코드 

현재 프로그램에서 fork 함수를 호출하면 부모프로세스와 자식프로세스로 분기된다. fork 함수의 반환값을 통해서 부모와 자식을 구분 가능하다. 아래의 코드 처럼 구현해보자.

  pid = fork();

  switch (pid)
  {
  case -1:
    // fork 실패
    break;
  case 0:
    // 자식 프로세스
    execl(app_path, app_name, NULL, (gchar *)0);
    g_error("execl failure");
    break;
  default:
    // 부모 프로세스
    break;
  }
  1. 사용자 프로그램에서 fork 함수를 호출한다. 운영체제는 fork 명령을 받고 새로운 (자식)프로세스를 생성한다.
  2. fork 실패 시, -1 이 반환된다. (시스템 메모리 부족 등의 원인)
  3. fork 성공 시, 새로운 자식 프로세스는 case 0 부터 실행된다. execl 함수로 새로운 프로그램을 실행한다.
  4. 기존의 부모 프로세스는 default 에서 계속 실행된다.

참고자료

프로세스 fork 의 개념에 대해서 wiki 를 참고한다.

https://en.wikipedia.org/wiki/Fork_(system_call) 

 

fork (system call) - Wikipedia

In computing, an operation whereby a process creates a copy of itself In computing, particularly in the context of the Unix operating system and its workalikes, fork is an operation whereby a process creates a copy of itself. It is an interface which is re

en.wikipedia.org

 

반응형