고수님들~~ loop문과 execl의 명령어 관계에서 질문이 있습니다.

ins878의 이미지

안녕하세요~ 리눅스 프로그래밍을 공부하는 초보 학생입니다.
다름이 아니라 execl()함수를 loop문 안에 돌리면 이상하게 execl()함수가
1번만 실행이되고 종료되어 버립니다.

=============================
소스코드
=================================

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main()
{
int i;

for(i=1; i<10; i++)
{
execl("/bin/ls","ls","-la",0);
}

return 0;
}

======================================

분명 10번의 반복문안에 execl()함수가 있기때문에 execl() 함수가 10번 호출이 되어야 하는데, 이상하게 1번만 호출이 되고 프로그램이 종료됩니다.

반복문안에서 execl()함수와 같은 기능을 가진 함수가 계속 반복 실행이 되게 하려면 어떻게 해야합니까?

고수님들 꼭 부탁드립니다. :(

sylphong의 이미지

exec계열의 함수는 현재 실행중인 프로세스를 새로운 프로세스로 덮어써버립니다. 따라서 ls가 한번만 실행되는거죠. fork한후 exec를 하던지 system함수를 쓰세요.

Darkcircle의 이미지

system 함수가 제일 간단하겠군요. :D
( 너무 간단하고 무성의한가 -_- . . . 원래 내머리의 구조는 -_-;; )

---------------------------------------------------------------
폐인이 되자 (/ㅂ/)

ins878의 이미지

fork()사용하면 될까 안될까~ 고민을 했었는데... 고수님들 감사드립니다. :wink: