Linux system() 와 fork(), execl() 사용
// a.c
#include <stdio.h>
int main()
{
printf("a : YoonByoungHoon\n");
return 0;
}
// b.c
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>
int main()
{
int status = 0;
// system() 이용 - 쉘을 이용하기때문에 쉘환경에 종속적이어서 비효율적이다.
pid_t parent, child;
system("./a");
printf("system()\n");
// fork() and execl() - 쉘환경에 상관없이 자식 프로세스를 생성하여 실행할 수 있다.
parent = fork();
switch(parent)
{
case -1:
perror("fork failed.");
break;
case 0:
execl("./a", "a", "", 0); // fork() 를 통해 자식프로세스를 생성하면 execl 로 새로운 일을 수행할 수 있다.
break;
default:
break;
}
// 자식 프로세스가 일을 끝낼때까지 기다려 준다.
child = wait(&status);
printf("fork() and execl()\n");
printf("Parent Process completed.\n");
return 0;
}
[출처] Linux system() 와 fork(), execl() 사용|작성자 소프트맨