시스템프로그래밍(리눅스&유닉스 질문합니다)

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <sys/wait.h>

int main() {

int i;

pid_t pid;

int status;

int start_time, end_time;

for (i = 0; i < 5; i++) {

switch (pid = fork()) {

case -1:

perror("fork");

exit(1);

break;

case 0:

// 자식 프로세스들이 실행할 명령어들

switch (i) {

case 0:

execlp("ps", "ps", "-al", NULL);

break;

case 1:

execlp("ls", "ls", "-l", NULL);

break;

case 2:

execlp("who", "who", NULL);

break;

case 3:

execlp("pwd", "pwd", NULL);

break;

case 4:

execlp("date", "date", NULL);

break;

default:

exit(0);

break;

}

break;

default:

// 부모 프로세스는 자식 프로세스가 종료될 때까지 대기

wait(&status);

if (WIFEXITED(status)) {

// 자식 프로세스가 정상적으로 종료되었을 때

end_time = time(NULL);

printf("Child process %d terminated. Execution time: %d seconds\n", pid, end_time - start_time);

} else {

// 자식 프로세스가 비정상적으로 종료되었을 때

printf("Child process %d terminated abnormally.\n", pid);

}

break;

}

if (i == 0) {

start_time = time(NULL);

}

}

return 0;

}


이 코드는 fork와 exec 함수를 사용해서 자식 프로세스를 동시에 5개를 fork 하고 자식 프로세스는 이 명령어들을 수행하게 할 목적으로 작성한 것입니다.


  - ps -al


✅최고의 답변✅

gcc 설치하셔서 실행하시면 됩니다.

리눅스에서 사용하는 c언어 컴파일러예요

설치 및 사용법은 다음과 같습니다.

1. gcc가 설치되어 있는지 확인

gcc --version

gcc 버전이 나오지 않으면 2번으로

2. gcc 설치

sudo apt-get install gcc

3. 코드 컴파일

gcc [.c 파일 경로] -o [파일 명]

4. 컴파일 완료된 파일 실행

./[파일 명]