파일 디스크립터 관련 질문입니다!

song689의 이미지

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
   int fd;
   if (fd = open(argv[1], O_RDWR) == -1)
      printf("파일 열기 오류\n");
   else printf("파일 %s 열기 성공 : %d\n", argv[1], fd);
 
   close(fd);
   exit(0);
}

위 코드를 실행시켜보았는데 fd가 0이 나오네요.
제가 예상한 결과는 3이 나와야될텐데 왜 0이나온거죠? 0,1,2는 기본적으로 할당되어있는 fd 아닌가요??

song689의 이미지

if (fd = open(argv[1], O_RDWR) == -1) 여기가 문법오류가 있었네요.
if ((fd = open(argv[1], O_RDWR)) == -1) 괄호를 빼먹어서 그런 거였습니다.