본문 바로가기

프로그래밍90

[s5pc100] 커널 컴파일 하기. 그림 설명. kernel-2.6.29-aesop-RTM10-20110309 컴파일 하기 zImage 만들기. 우선. root 권한 기준으로 설명을 하기 때문에 sudo su - 입력 후 현재 계정의 비밀번호를 입력. 명령 프롬프트에 $ 끝나던 것이 # 으로 바뀐 것을 확인 할 수 있습니다. 일반 계정에서 root 계정으로 전환 입니다. 전환하지 않으면 실행되지 않는 명령들이 있으며, 그 명령어들마다 sudo 를 붙여줘야 하기 때문에 root 권한으로 작업. 경로가 상당히 깁니다. 2~3글자 정도 입력 후 Tab 키를 눌러주면 자동으로 완성됩니다. 중복된 이름이 있는 경우 그 이름들을 모두 출력해 주며, 중복되지 않는 고유한 글씨까지 입력 후 Tab 키를 눌러주면 완성 됩니다. 윈도우와 우분투의 공유폴더를 생성해서 공.. 2011. 10. 25.
[s5pc100] System Call 추가하기. 그림 설명. [s5pc100] System Call 추가하기. 그림 설명. [can-c100] System Call 추가하기. 그림 설명. [kernel-2.6.29-aesop-RTM10] System Call 추가하기. 그림 설명. kernel-2.6.29-aesop-RTM10 의 커널에 system call을 추가해 보자. 경로가 상당히 깁니다. 2~3글자 정도 입력 후 Tab 키를 눌러주면 자동으로 완성됩니다. 중복된 이름이 있는 경우 그 이름들을 모두 출력해 주며, 중복되지 않는 고유한 글씨까지 입력 후 Tab 키를 눌러주면 완성 됩니다. unistd.h 파일을 열어서 System Call을 추가한다. vi /android/kernel/kernel-2.6.29-aesop-RTM10/arch/arm/includ.. 2011. 10. 25.
[시그널] kill(), pause(), alarm(), raise() 설명 및 간단 예제. kill() : 다른 프로세스에게 시그널 전송 #include #include int kill(pid_t pid, int sig); //특정 시그널을 프로세스에게 넘김. 성공 0, 실패 -1 pause() : 시그널 대기 함수 #include int pause(void); 시그널이 도착할 때 까지 기다림. 항상 -1 을 리턴. alarm() : 자신에게 알람 시그널 전달 함수 #include unsigned int alarm(unsigned int secs); 지정한 초(secs) 뒤에 현재 프로세스에 시그널을 전달함 raise() : 자신에게 시그널 보내는 함수 #inculde int raise(int sig); 2011. 10. 18.
[C언어] 빙고게임 만들기. 소스 및 설명. 실행 파일 입니다. 혹시 테스트 해보실분 다운 받아서 실행 해보세요. 나름 문제점들을 많이 수정 했지만, 분명 완벽하진 않을테니 이것 저것 해보시고 에러 발생하는 경우를 댓글로 올려주시면 감사하겠습니다. ^^ 결과물과 소스. 주석이 있으니 기본적인 개념이 있으신 분들은 그냥 스샷만 보면서 넘어가셔도 금방 이해 하시리라 생각 됩니다. 소스가 번잡해서 안될지도 모르겠지만...... -,-; 사실 분명히 간단하게 하는 로직이 있겠지만; 제가 아는 지식 범위 내에서 만들다 보니 불필요한 작업이 많이 있을지 모릅니다. 혹시나 보시다 효과적인 과정이나 방법이 있다면 댓글 주시면 감사하겠습니다. 게임의 메뉴 선택 화면. 1번. 연습모드 선택 시. 12 입력 후. 엔터를 눌러야 화면에서 12 가 x로 치환. 2번 대전.. 2011. 10. 18.
fork()를 이용한 tcp socket 1:1 채팅 예제. fork()를 이용한 tcp 채팅 예제. client. fork()를 이용한 tcp 채팅 예제. server. 실행 결과 화면. 아래는 주석이 없는 원본 소스 입니다. 당연한 이야기지만 리눅스에서 작성되어 메모장에서는 글자가 이상하게 나옵니다. c 프로그램이나 리눅스, 또는 기타 에디터 프로그램으로 열어 주세요. 2011. 10. 18.
undefined reference to `pthread_join' 에러 발생 시. undefined reference to `pthread_join' undefined reference to `pthread_join' undefined reference to `pthread_create' undefined reference to `pthread_create' 컴파일 할 때 끝에 -lpthread 붙여주면 된다. [ i가 아닌 l ] 2011. 10. 10.
[시그널] 시그널 집합(signal set) 처리. 규모가 큰 소프트웨어를 만들 때 여러 개의 협력하는 프로세스들을 구성하여 서로 정보를 주고 받도록 하는 프로세스 간 통신 기법 중의 하나. => 프로그램 실행 시간이 오래 걸리거나, 잘못되었을 때, 리눅스에서는 Ctrl_C 같은 인터럽트 키를 이용하여 명령을 종료 시킴. : 키보드로 입력한 Ctrl_C 키는 커널에서 감지 -> 해당 프로세서에 시그널을 보냄. => 또는 백그라운드에서 kill 을 입력하면, 실행한 작업을 강제로 종료시킴. 예> $ ./a.out & [1] 2548 이 출력됐다면, $ kill 2548 => 유닉스 , 리눅스에서 사용되는 시그널은 30 여가지가 있음. 시그널은 signal.h 에서 제공. 시그널을 다룰 때 시그널 집합으로 다루는 것이 편리함. sigemptyset(), si.. 2011. 10. 7.
시그널 처리. 과제 2011. 10. 6.
'gets' function is dangerous and should not be used. 'gets' function is dangerous and should not be used. gets는 버퍼에 얼마나 값을 저장할지 지정하지 않기 때문에 버퍼오버플로우 기법에 노출된다. 때문에 fgets를 이용해 크기를 지정해서 사용하는 방법을 채택한다. fgets(char *, int, FILE *) (저장할 버퍼, 저장할 크기, 읽어들일 대상) 읽어들일 대상에 주로 stdin 을 사용한다. 즉 키보드에서 입력한 값을 읽는다는 의미이다. 키보드에서 읽어서 크기만큼 버퍼에 저장하게 된다. gets의 경우 과정은 동일하지만 키보드가 기본이자 고정이다. 다른 곳으로부터 읽을 수 없으며. 읽는 크기에 대한 제약이 없다. 2011. 10. 6.
표준 파일 입출력 * 표준 입출력 함수 사용 : 모든 OS 에서 사용할 수 있는 함수 - ANSI C 에서 제공하는 표준함수임. * 저수준 입출력 함수 사용 : UNIX / LINUX 에서 제공되는 함수 - 외부 입/출력 장치도 파일로 다룸.... - 파일의 속성을 제어하는 함수도 제공됨. //***************** 파일 처리 작업 순서 ------------------- 1. 파일포인터 또는 파일지시자 변수 선언 (표준입출력) (저수준입출력) 2. 작업 대상 파일을 연다.(open) : 파일포인터 또는 파일지시자가 대상파일의 주소 또는 정보를 참조하게 됨. 3. 파일안의 내용 입력(read) 또는 출력(write) 처리함 4. 작업이 끝나면 반드시 대상 파일을 닫는다.(close) //**************.. 2011. 10. 6.