IT/네이버지식인

[지식인]질문 유닉스 리눅스 구문 해석

송시 2022. 6. 23. 00:26
728x90

지식인을 10년 넘게 해오면서 용어 정리가 묘하게 되어 있는 녀석이 있는데 그중 하나가 포함되는 질문이였다.

 

유닉스/리눅스 프로그래밍 이라고 하는 책들이 워낙 많아서 그런지 유닉스/리눅스 = C 언어 이런 묘한 공식이 있는 것 같다.

 

물론 개떡같이 말해도 찰떡같이 알아들을 수 있지만, 프로세스와 프로세서, 프로그램이 무엇인지를 말해야 할때에는

 

개떡같이 말해선 안되는 것 같다.

 

질문

if((n=read(fd,buf,BUFSIZ))==-1){

 perror("read");

 exit(1);

 

답변

일단 질문 제목은 "C 언어 해석" 이 맞습니다.

// read 함수를 사용하는데 그 값을 변수 n 에 저장할 것입니다.

// 앞서 fd 로 open 을 했을텐데, 그 값을 fd 에 저장했을 겁니다.

// fd 즉 파일이 열린 주소값을 BUFSIZ 라는 변수의 크기만큼 읽은 후에 buf 라는 변수에 시작주소를 저장합니다.

// 그런데 만약 read 함수가 어떠한 이유에서 실패하게 된다면 즉 read 로 인해 반환되는 결과값이 -1 일때

== -1 이랑 같다는 의미는 함수가 실패하였음을 의미

// -1 일때 perror 를 통해 read 에러가 발생하였음을 콘솔에 출력하고, 프로그램을 종료 함 exit(1)

if((n=read(fd,buf,BUFSIZ))==-1){

perror("read");

exit(1);

 

https://kin.naver.com/qna/detail.naver?d1id=1&dirId=10302&docId=402844230&page=1#answer1

728x90