execl()은 자기가 따로 만든 코드로 프로세스를 실행하지 못하나요??

shlaurant의 이미지

안녕하세요

온라인으로 보드게임 한번 직접 코딩해서 해보려고 이것저것 뒤적이다 질문드립니다.

서버쪽의 프로세스가 클라이언트로 부터 새 게임 생성 요청을 받으면 따로 컴파일 해둔 코드를 실행시키게 하려고 하는데요(게임과 관련된 연산을 실행하는)

//생략
 
pid = fork();
 
if (pid == 0)
{
     execl("/home/ubuntu/server/LC/admin/admin","home/ubuntu/server/LC/admin/admin", (char*)i, NULL);
     printf("cannot be executed\n");
}
 
//생략

서버쪽 코드 중간에 이런 내용이 들어가는데 실행시키면 cannot be executed 라는 문장밖에 볼수가 없더군요;;

admin.c는 테스트용 코드인데 이렇게 생겼습니다.

//헤더파일 생략
 
int main(int argc, char *argv[])
{
     int mid = argv[1];
 
     printf("hi from child\n");
     printf("%d\n", mid);
 
     return 0;
}

}

저 mid는 메세지 큐를 이용하려고 넣어놓은건데 hi from child도 못보고있으니.....

execl로 불가능하다면 무엇을 이용하면 좋을까요??

답변주시면 감사하겠습니다.

raymundo의 이미지

execl 바로 다음 줄에 perror()를 넣어서, 일단 execl 이 왜 실패했는지부터 살펴보시죠.

i 가 아무렇게나 정수값을 넣은 변수라면 그게 인자로 들어가면서 문제가 될 것 같습니다만.

좋은 하루 되세요!

hernian의 이미지

execl 함수 두번째인자가 맨앞에 /가 빠진거 같은데.. .그문제 아닐까요?