fork를 사용한 구구단 프로그램[C, Linux]

fork를 사용한 구구단 프로그램[C, Linux]

안녕하세요.

오늘은 유닉스라는 과목을 들으면서 제가 만든 코드를 올려보려고 합니다.

  • 1. 특정한 구구단 하나를 출력하는 구구단 프로그램
  • 2. child process로 구구단을 출력하는 프로그램
  • 2-1. (exec 함수 사용, 자식 프로세스가 출력을 완료할 때 까지 parent process는 대기)

코드

코드는 아래와 같습니다.

코드 파일은 깃허브에서 다운받으실 수 있습니다.

(귀찮아서 나중에 링크 올릴게요.)

1. argv[]로 넘겨주면 해당 단을 출력하는 프로그램

2. 자식 프로세스로 위의 프로그램을 실행시키고 매개변수로 2~9까지 넘겨주는 프로그램 

실행

해당 파일들은 리눅스환경(라즈베리파이 라즈비안)에서 실행한 결과입니다.

1. argv[]로 2를 주어 2단을 출력

2. 자식프로세스에서 끝나기를 기다렸다가 끝나면 parent process를 출력

주요 코드 설명

1. 첫번째 코드는 매우 간단하기 때문에 간단하게 설명하고 넘어가도록 하겠습니다. 

  -처음에 실행을 할때 매개변수로 숫자를 넘겨줍니다.

  -하지만 argv[]는 문자형이기 때문에 문자형을 정수형으로 바꿔주기 위해서 atoi를 사용합니다.

  -모르는건 검색 ㄱㄱ 나머지는 그냥 구구단이기때문에 설명은 생략하겠습니다.

 

2. 두번째 코드는 자식 프로세스에서 exec를 사용해 guguone프로그램을 실행시키는 프로그램입니다.

  -문자형 데이터를 guguone에 넘겨주기 위해서 문자형 배열 buffer를 선언합니다.

  -buffer에 sprintf를 이용해서 넘겨줄 데이터를 써줍니다.

  -exec를 이용해서 guguone을 실행하고 buffer의 값을 guguone의 argv[]로 넘겨줍니다.(exec는 아래 스샷 참고)

  -부모 프로세스는 자식 프로세스의 구구단 출력이 끝날때까지 기다립니다.(wait)

  -자식 프로세스가 끝나면 부모프로세스는 parent process라는 문자열을 찍어줍니다.(이렇게 2단에서 9단까지)

exec 함수에 대한 설명1
fork와 exec
프로세스 동기화 함수 wait

추가+

이렇게도 가능합니다.(똑같은 것이라서)

 

Designed by JB FACTORY