| [ 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; 까지 실행이 되고 나서 에러가 나네요.. 미리 감사드립니다.. ^^;; |