[완료] 세그멘테이션 오류 질문입니다.
안녕하세요.
stevens 책을 보면서 예제를 따라하다가 질문이 있어서 글을 씁니다.
예제를 보고 컴파일을 했는데 세그멘테이션 오류가 나는군요..
어느부분이 문제인지 설명좀 부탁드리겠습니다.
감사합니다.
=====================================================================================================
#include
#include
#include "ourhdr.h"
int
main(int argc, char *argv[])
{
int accmode, val;
if(argc != 2)
printf("usage: a.out ");
if((val = fcntl(atoi(argv[1]), F_GETFL, 0)) < 0)
printf("fcntl error for fd %d", atoi(argv[1]));
accmode = val & O_ACCMODE;
if (accmode == O_RDONLY) printf("read only");
else if (accmode == O_WRONLY) printf("write only");
else if (accmode == O_RDWR) printf("read write");
else printf("unknown access mode");
if(val & O_APPEND) printf(", append");
if(val & O_NONBLOCK) printf(", nonblocking");
#if !defined(_POSIX_SOURCE) && defined(O_SYNC)
if(val & O_SYNC) printf(", synchronous writes");
#endif
putchar('\n');
exit(0);
}
if((val =
if((val = fcntl(atoi(argv[1]), F_GETFL, 0)) < 0)
요부분이 문제입니다.
main 함수의 argc, 와 argv 가 무엇인지에 대해서 알아 보세요
간단하게 설명드리면 argc 는 실행코드의 인자 갯수 이고 argv 는 실행코드의 인자 이름 입니다.
오류가 나는 원인은 argv[1] 이 null 값이기 때문입니다.
답변 감사합니다.
실제로 말씀하신 부분에 exit(1)을 넣어보니 정상작동 하는군요.
감사합니다.
=================================================================
B(Birth) C(Choice) D(Death)
인생은 주어지는 것이 아니고 선택하는 대로 되는 것이다.
B(Birth) C(Choice) D(Death)
인생은 주어지는 것이 아니고 선택하는 대로 되는 것이다.
댓글 달기