본문 바로가기
반응형

코스웨어/12년 내장형하드웨어207

9월 20일 업무일지 - 김동기 64page 소스분석 unistd.h에 정의 되어 있는 read를 사용한다. 이를 사용하기 위해서 파일을 include시킨다. 원형은 ssize_t ret (int fd, void *buf, size_t len); 이고, 성공시 0 실패시 -1을 반환하고, errno을 설정한다. 이를 perror을 이용해서 출력한다. 결과 창에 파일을 기술 할수 없다는 메세지가 나타나는 것을 확인 할 수 있다. 만약 성공시 받을 크기(len)와 받은크기(ret)가 같으면 len이 0이 되고, 빠져 나온다. 아닐시 len-ret = len 나머지 읽을 계수를 세팅하고, 파일 포인터를 읽지않은 곳까지 이동시키는 코드이다. 이때, while문을 빠져 나올때, 두 조건을 모두 거짓으로 만들어 버리면서 나온다. 이 점을 한번 알.. 2012. 9. 21.
[Linux]2012/09/20 작업일지 - by 이창현 Linux Man Page 사용법. 그림 1) man Linux 명령어 확인. 1. 그림 1)은 man page를 사용 하는 방법이다. 알고 싶은 명령어나 함수가 있다면 적극 활용 하는 것이 좋다. 물론 영어도 되어 있는 것도 있고 한글로 된 부분도 있지만 운영체제가 영어로 된 버전이라면 아마도 man page는 다 영문으로 나오겠지만 어떤 옵션이 있는 등을 알 수 있기때문에 많은 도움이 된다. 그림 1) 명령어는 일반적으로 쓰는 방법인데 ls 라는 명령어를 확인 하기 위해 사용하였다. 그림 2) man Linux 명령어 ls 에 대한 정보 확인. 2. 그림 2)는 Linux의 명령어 ls 에 관한 정보들이다. ls 에 대한 옵션들이 나와 있으므로 모르는 옵션이 있다면 참조 하여 사용 하면 된다. 그리고.. 2012. 9. 20.
FAT 포맷형식, 다중입출력 최소할당단위를 4KByte 정도로 적당히 파일을 쪼개서저장 하기위해 파일 앞뒤로 더블링크로 연결되어있다. 3개의 장치중 먼저 들어오는 순서대로 처리하고싶어도 C는 순차적으로 수행을하기때문에 A를 먼저처리하지 못하면 키보드값을 입력해도 처리가 안된다 그래서 select 함수를 쓰면 이를 해결할수있따. 2012. 9. 20.
09.20 배운것 ※ C문법에서 빼먹은 것 i = 100; if(0 && i++); 란 식을 보면 if문의 결과는 거짓이다. 하지만 if문의 조건은 수행되었기 때문에 i 값은 1이 증가한 101일것 같지만, 실상은 그렇지 않은 100의 결과값을 가진다. 왜냐하면 컴파일러가 알아서 최적화(왜곡)를 시키기 때문이다. 그래서 0의 결과만 봐도 거짓임을 판단이 가능하기 때문에 i++를 실행하지 않는다. if(1||i++); 란 식도 마찬가지다. 1의 결과만 보더라도 if문의 결과가 참인것을 알기 때문에, 뒤에 i++를 실행시키지 않는다. 결국 컴파일러의 최적화는 또 다른 왜곡이다. 1. 비차단 읽기(Non-Brocking) read()는 블로킹함수다. 하지만 open() 함수를 호출하면서 O_NONBROCK으로 설정하면, 비차단.. 2012. 9. 20.
size_t size_t 의 크기는 int형이고 size_t = unsigned int ssize_t = signed int size_t의 최대값은 SIZE_MAX ssize_t의 최대값은 SSIZE_MAX 이다 2012. 9. 20.
read(), write() read 함수가 엔터 값까지 가지고있는걸 확인할수 있다 그래서 문자열을 출력할때 %s 양옆으로 대괄호를 둘러싸면 뒤에 뭐가 들어가있는지 확인할수있는 좋은 습관 putchar는 내부버퍼에 문자가 다차거나 '\n' 을 만날떄 출력이 된다 그래서 fflush()를 써서 내부버퍼를 바로 출력시켜준다 2012. 9. 20.
2012/9/19 - 리눅스 시스템 프로그래밍 업무일지 - 김동기 리눅스 시스템 프로그래밍 다른 프로그램들과 다른 점을 알아보자. 시스템과 어플리 케이션은 정확한 구분을 줄 수는 없지만, 굳이 말하자면, 주목적이 운영체재가 필요한 프로그램 이냐// 사람이 사용하기위한 프로그램이냐로 볼수는 있지만,코드자체로는 별 구분이 없다. 우리가 말하는 리눅스, 윈도우, ios , 등의 운영체재들은 커널이라고 하는 종류의 이름이다. 커널을 쉽게 쓰기 위해서 만든 유틸리티(시스템 정보를 직접적으로 사용하는 조각모음)와, 오락같은 어플리케이션 (메모장, 계산기), 커널에 포함되어 있는 드라이버등이 있다. 커널에는 셸(shell : 조개껍질) 이라는 것이 있는데, 이는 중간 번역기(명령어 해석기) 라고도 하며, 커널에 접근하여 헤당하는 함수를 호출할 수 있게 하는 역활을 한다. 우리가 윈.. 2012. 9. 19.
64비트 리눅스 배포판에서는 errno.h 의 위치가 다를 수 있습니다. 물론 해당 파일 외에 많은 라이브러리 들이 64비트 용으로 따로 빠져있습니다.확인은 사용중인 우분투에서만 했고 다른 배포판에서의 위치는 $ find /usr/include -name errno.h 로 검색해보시면 쉽게 찾을 수 있습니다. 위 사진 처럼 64비트 용으로 따로 빼둔것을 볼 수 있습니다. 2012. 9. 19.
errno 에 정의되어있는 에러넘버와 주석 errno는 #include에 extern int 로 선언되어있다. 강제로 9를 넣으면 9번 에러메세지가 출력된다 strerror 함수는 인자안의 숫자가 가리키는 문자열의 주소를 리턴한다. 작동원리는 메모리뷰에서만든 함수호출방식과 비슷하게 해당번호가 걸리면 문자열을 리턴하는식으로 작동됨 2012. 9. 19.
728x90
반응형