본문 바로가기

공부/c언어

c언어 공부 단계 먼저 C 언어에 대해 정의해야 합니다. 보통 C 언어를 잘 한다고 하면, 전체적인 코딩 능력을 보는 경우가 많습니다. 가령, 윈도우에서는 API와 MFC를, 리눅스에서는 시스템이나 X 윈도우 프로그램 등입니다. 앞에 있는 분이 C 언어 자체에 대해서만 말을 했으므로, 저는 이와 같은 일반적인 경우에 대해 말해 보겠습니다. 참고로 여러 권의 책을 쓴 저자이며 현재 무역협회 강사입니다. 개인적으로 www.printf.co.kr을 운영하고 있습니다. 여러 권의 책을 쓰고 강사로 활동하고 있습니다. 저는 윈도우 기반에서 활동하므로 윈도우를 기준으로 얘기하겠습니다. [1단계] C와 C++를 공부하는 단계로 자료구조를 반드시 포함해야 합니다. 자료구조에 대한 코딩은 어느 정도까지는 직접 할 수 있어야 합니다. C에.. 더보기
크리티컬 섹션, 뮤텍스, 세마포어 차이점 1. 크리티컬 섹션 유저 객체입니다. 커널에서 제공되는 객체가 아니라는 말입니다.커널 객체가 아니므로 가볍고 빠릅니다.그러나 한 프로세스 내의 쓰레드 사이에서만 동기화가 가능합니다.보통의 경우 가볍고 쉽게 쓸 수 있는 동기화 객체입니다. 2. 뮤텍스크리티컬 섹션과 다르게 커널 객체입니다.그러므로 크리티컬 섹션보다 무겁습니다.크리티컬 섹션이 한 프로세스 내의 쓰레드 사이에서만 동기화가 가능한 반면,뮤텍스는 여러 프로세스의 스레드 사이에서 동기화가 가능합니다.뮤텍스를 가장 흔히 사용하는 예가 프로세스 다중 실행을 막을 때입니다.이런 기능은 크리티컬 섹션으로는 불가능합니다. 3. 세마포어세마포어 역시 커널 객체입니다.위의 크리티컬 섹션, 뮤텍스는 동기화 함에 있어서 동시에 하나의 쓰레드만실행되게 합니다.이에 .. 더보기
wait함수 #include pid_t wait(int *stat_loc); wait 함수의 인자인 int *stat_loc 는 자식 프로세스가 종료될 때의 상태 정보를 나타낸다. 반환값 pid_t 는 자식프로세스의 프로세스 번호가 리턴된다.부모 프로세스는 0을 리턴받는다 반환값 성공 : 자식 프로세스의 pid, 부모 프로세스는 0 반환 실패 : -1[출처] [8] 프로세스 동기화, 속성, 환경변수|작성자 발업달팽이 더보기
포인터와 배열과의 관계 int a[3] int a[0] ~ int a[3]a[]은 각각 int형으로 볼 수 있다 int*는 int형의 주소값을 저장할 수 있는 형이다 int* b = aa는 a[0]의 주소와 같음 int형 주소값을 저장하는 b에는 a[0]의 주소가 저장되어진다 더보기
printf(%.*s) sprintf ( szQuery, "SELECT * FROM USER_INFO WHERE szUserID = '%.*s'", SZ_ID, szUserID ).을 찍고 *를 하면 해당 인자의 값을 취해서 그만큼만 데이터 길이를 짤라서 취합니다. 문자열배열 szUserID[]에서 SZ_ID만큼 잘라서 사용함 더보기
디버깅 종류 기본 디버깅 - 브레이크 포인트와 디버그모드로 실행을 이용한 디버깅(F5, F9, F10, F11 등을 이용하는..) 변수의 체크나, 코드의 흐름등을 확인 할 수 있음. 메모리 디버깅 - 특정 변수에 대해 조사하고 싶을 때, 변수의 주소값을 취해, 해당 주소의 메모리가 변경될 때 중단점이 히트. 변수가 바뀌는 부분을 알고 싶을 때 유용. 원격 디버깅 - 원격지에서 실행되는 프로그램을 빌드한 소스를 이용해 원격지에서 디버깅 할 수 있는 방법 원격지에서 실행되는 프로그램에 대해, 기본 디버깅처럼 수행 가능. 심볼 파일이 필요. 메모리 덤프 - 윈도우가 뻗거나, 치명적이 오류가 발생했을 때 메모리의 상태를 파일로 기록해 놓을 수 있다. 이 파일을 WinDbg라는 프로그램을 이용해 분석하여, 오류가 난 원인을 .. 더보기
typedef char str[30] typedef char str[30];str string; 위 코드는 다음과 같습니다. char string[30]; 더보기
컴파일 과정 [그림 07-1] 1단계 전처리 cpp 코드 상단에 시작되는 #으로 시작하는 것을 전처리 부분이라고 합니다. 전처리 부분을 처리하기 위한 과정을 거쳐 파일.i로 임시파일을 생성해줍니다. 2단계 컴파일 단계 cc1 전처리된 파일.i 를 컴파일하는 과정입니다. 이 과정을 거치게 되면 어셈블리 로 바꿔주게 됩니다. 3단계 어셈블리 단계 as 파일.s를 오브젝트 파일로 변환하는 과정입니다. 4단계 링크 단계 id 오브젝트 에서 링크 단계를 거쳐서 실행파일을 만드는 과정입니다. 링크 간단한 프로그램의 경우에, 목적파일인 오브젝트 파일이 하나 만 나옵니다만... 제작하는 프로그램의 규모에 따라서, 목적파일은 다수가 생겨나오게 됩니다... 링킹 이라는 것은, 링크하는것 즉, 링크 작업을 하는것, 이라는 의미로 사용되.. 더보기