CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): ymir (Mizz)
날 짜 (Date): 2002년 10월 21일 월요일 오후 01시 47분 15초
제 목(Title): [Q] 왜 seg_fault 가..?



아래 코드를 컴파일 하고 실행했더니..

결과는 제대로 나오는데..

코드 마지막에서 seg fault 가 나네요..??

gdb 돌려 봐도.. 아직 내공이 약해서 어디서 왜 나는건지 모르겠네요.. ^^;;

무지한 저를 깨우쳐 주셨으면 합니다.. ^^;;



---
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/wait.h>

char cmds[] = "/export/home/ymir/run b b c d e f";
char seps[] = " ";
char *token;
char *args[] = {};

int main(void)
{
int p_stat, i;
pid_t pid;

i=0;
token = strtok( cmds, seps );
while( token != NULL )
{
args[i] = token;
printf("args[%d] : [%s]\n", i, args[i]);
i++;
token = strtok( NULL, seps );
}

pid = fork();

if (pid < 0)
perror("fork error");

/* clild process */
if (pid == 0)
{
execv(args[0], args);
}
else
{
pid = wait(&p_stat);
printf("[%d] Exit with status = [%d] \n",getpid(), p_stat);
if (p_stat == 0)
{
printf("[] COMMAND SUCCESS\n");
}
else
printf("[] COMMAND FAIL\n");
}
return 0;
}


--------------
아래는 gdb 돌렸을 때..


..
45                              printf("[] COMMAND FAIL\n");
3: i = 7
2: token = 0x0
1: args[i] = 0x0
(gdb) n
[] COMMAND FAIL
47              return 0;
3: i = 7
2: token = 0x0
1: args[i] = 0x0
(gdb) n
48      }
3: i = 7
2: token = 0x0
1: args[i] = 0x0
(gdb) n
0x10894 in _start ()
2: token = 0x0
(gdb) n
Single stepping until exit from function _start,
which has no line number information.

Program received signal SIGSEGV, Segmentation fault.
0x10904 in __do_global_dtors_aux ()
2: token = 0x0
(gdb)

..

main 의 return 0; 까지 실행이 되고 나서 에러가 나네요..


미리 감사드립니다.. ^^;;






[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.