728x90

리눅스 공부하면서... 이해한걸 또 까먹을까봐 내식대로 적어두려함

 

출처는 학교 리눅스 수업 + 모두를 위한 리눅스 프로그래밍(아오키 미네로, 2018) 이다.

 

컴퓨터는 기본적으로 1차원 바이너리를 읽는다.

따라서 모든 데이터는 1차원으로 바뀌어서 흐른다... 이것을 스트림이라고 할 수 있다.

 

프로세스가 하나 생성되면 해당 프로세스에 3개의 스트림이 자동으로 생성되는데,

이것이 표준입력, 표준출력, 표준에러출력이다.

이들은 각각 0,1,2 의 디스크립터(ID같은것?)를 갖는다. 그치만 그걸 유저에게 외우라고 하진않고....!

STDIN_FILENO, STDOUT_FILENO , STDERR_FILENO 라고 매크로를 지정하여뒀으니 이걸 넣어서 인자로 주고받을수있다

 

이것은 컴퓨터의 중요한 개념인 추상화(abstraction)를 내포하고있는데

내 프로세스는 이 표준입력이 파일에서 온건지 키보드로 친건지는 신경쓰지 않고 똑같이 처리할 수 있다.

표준 출력을 내보낼 때도 마찬가지다. 이걸 모니터에 쓰든 다른 프로세스로 전달하든 알바가 아닌것이당......

 

암튼 이 스트림들을 우리는 수많은 입출력이 포함 된 API 를 통해 간접적으로 쓰고있지만

시스템콜로 직접 호출하려면

unistd.h 헤더를 포함하고, read, write를 사용하면 된다.

write 를 쓰려면

문자열(char []) buf 를 선언하고(당연 변수명은 달라도 됨)

write(STDOUT_FILENO, buf, sizedof(Buf)-1);

 

위와같이 하면 된다.

 

buf는 우리가 흔히 '버퍼링 걸린다' 고 할때의 버퍼인데 (이말도 안쓴지 10년넘긴한듯...) 암튼....

저렇게 하면 buf 에 들어있는 문자열이 표준출력으로 나온다! ( 터미널에 찍힘 ) 파이프로 연결해서 다른데로 보낼수도있다..

 

 

해당내용은 위에 언급한 책 64~71 페이지를 읽어보면 더 자세하고 정확하게 나온당......끗!

728x90
728x90

요즘 자기전에 짬짬히 읽어서 1~4장까지 오늘 읽었따

아직 코딩은안해봤는데 여기까지는 안드 스터디잼 하면서 뭣도모르고 짜증내면서 따라서 코딩해본(?) 부분이라서 헐 이게 이뜻이었구낭~ 하면서 읽어가는 중이다.... 

1~4장 리뷰 한번에 쓰려했는데 쓰다보니 많아져서 따로써야겟당 낼마저 쓸..까..?

 

1장 

간단히 스튜디오 설치와 SDK등에 대해 얘기해주고, 

레이아웃 파일과 리소스 등의 파일 구조에 대해 알려준다. 

리소스의 리소스 ID는 R.class에 자동으로 생성된다는 것....

여기서 아항 그래서 맨날 R.class.뭐시기 하는구나 했다 (당연한건데 설명해줘야 아는 ㅠㅠ)

 

그리고 간단히 버튼을 만들고 리스너를 설정해보는데 

Button객체를 선언하면서 lateinit을 사용하는 이유를 배웠다... 

클래스 속성 정의시 초기화를 해야하는데 버튼객체가 인플레이트 되는 시점은 onCreate, setContnetnView가 호출되고 실행되는 때 이므로 그 밖에서 선언할 때는 lateinit을 사용하는 것이다. 

 

그리고 예시에서 리스너를 익명 클래스로 사용하는데 이 부분은 배우긴 했지만 뭔가 맘으로 잘 안받아들여져서.. ㅠㅠ 코틀린 문법 공부를 더해야하나 싶다... 

 

텍스트로 된 책인데도 자동 임포트 같은 부분을 잘 알려줘서 참 좋당 가끔 이런거 다 안쓰고 타이핑하게 만드는 악덕한책들도있는데 하하.... 아니 그게 배우는 과정이라면 할말은 없지만.... 

 

암튼 뭐든지 사용할때 뭘 상속받은 클래스인지 파라미터의 의미는 뭔지 친절하게 설명해주니 참 좋다.... 

 

마지막 부분에는 빌드 과정에 대해서도 간략히 소개하여 그 부분을 3번은 읽어보았당

 

 

 

 

근데 처음...처음만드는 사람이 보기엔 좀 어렵지않낭..? 아니 경력 프로그래머면 괜찮으려나 ㅠㅠ 책제목이 실무 어쩌구니깐..... 

 

728x90
728x90
더보기

수업과 과제를 하기위해 리눅스(우분투20.04)에 새로 VS code 를 설치했다..
C/C++ Extension 을 설치하고

그리고 시험삼아 Hello world 를 실행해봤는데 요런 오류가났당

 

Error: The cppbuild task detection didn't contribute a task for the following configuration

 

게에엑...

그리고 구글링해보니 익스텐션 최신버전에서 컴파일 오류가 났었다는 사람이 있어서

대충 최신인 1.6.0 에서 1.3.0으로 다운그레이드 시키니 컴파일이 잘 된당

 

1,2,3 순서대로 찾아가서 다운그레이드하기!

 

 

 

참고한 글 :

https://www.python2.net/questions-1284162.htm

728x90

+ Recent posts