CodeLyst

[42서울] 진행중인 후기

#42seoul@halexh
thumb nail

서울 42 진행중인 후기

MAC 적용이 힘들다

계속 윈도우만 사용해왔던 나는 처음으로 MAC을 사용해봤는데 적응을 하나도 못해서 적응하는데만 시간이 굉장히 오래걸렸다.

처음에는 Shell에 관해서 공부를 했는데 리눅스 명령어를 공부할 수 있었고 전공자들이 가장 힘들어하는 구간이라고 했다.

그래서 Shell 부분을 둘다 100점으로 클리어하는데에는 3일정도 소요된 것 같다.

처음보는 C언어 함수

그다음 C언어를 본격적으로 시작했는데 처음부터 당황스러웠다. 왜냐하면 처음보는 헤더파일과 처음보는 함수를 사용했다. 보통 hello world를 출력하려면

#include <stdio.h> int main() { printf("Hello world"); }

이런 방식으로 사용하지만 서울42에서 요구하는 출력은 이게 아니었다.

#include <unistd.h> int main(int argc, char **argv) { write(1, "Hello World", 11); }

이런 방식으로 사용했다.

  • write함수

태어나서 처음보는 헤더파일과 write함수는 정신이 나갈 것 같았다. 그래서 write함수에 대해 공부를 해보았는데 3개의 인자중 첫번째 인자에는 0, 1, 2가 들어갈 수 있는 것 같다. 이 인자는 파일 디스크립터에 해당된다. 0에서 255까지인데 0은 stdin 1은 stdout 2는 stderr를 담당한다. 그래서 출력을 담당하는 stdout이므로 1을 사용한 것 같다. 그리고 두번째 인자는 버퍼에 들어가는 내용인데 자세한 내용은 생략하겠다. 세번째에 들어가는 인자는 출력할 글자 수를 의미한다.

  • argc와 argv

이러한 방식으로 출력을 하게 된다. 또한 main 함수에 존재하는 argc와 argv도 처음 보는 것이었는데 이것이 뭐냐하면 argc는 CLI환경에서 실행하고 다루다 보니까 argc는 명령어 인자수를 의미하고 argv는 그 내용이었다.

예를들어 명령어로 ./a.out 3 5라고 입력했다면 argc는 3이고 argv[3]= {./a.out, 3, 5}가 된다. 따라서 명령어에서 원하는 숫자에 직접 인덱스로 접근이 가능하다.

요즘은 사용하지 않는 방식인 것 같아서 잘 모르는 부분이었다. 이런 것들을 배울수 있게 되어서 괜찮았다.