Programming
리눅스에서 쓰레드를 생성하여 ID 값을 찍어볼때…. 다음과 같이 마이너스 값이 나오는 경우가 있다. 이와 같은 경우는 printf의 타입 값을 잘못 지정해서 생기는 현상이다. 보통은 다음과 같이 입력했을 것이다. (Language : c) pthread_t t_id; state = pthread_create(&t_id, NULL, thread_function, NULL); printf(“생성된 쓰레드의 ID : %d n“, t_id); 하지만 pthread_t 의 타입을 보면… 즉…..%lu 로 지정해야 […]
네트워크 프로그래밍을 하더도중…한가지 풀리지 않는 의문점이 생겨 KLDP 게시판에 글을 올렸다. 내용 보기 : http://kldp.org/node/90394 글을 올린지 30분도 채 안되서 답변이 올라왔다. 문제인즉… 다음과 같은 코드를 실행했을때… (Language : c) #include #include #include #include #include void error_handling(char *message); int main(void) { int fildes; FILE *fp; fildes […]
scanf 로 문자열을 받고 나면 공백으로 구분되서 남은 문자들이 아직 버퍼에 남아 있기 때문에… fflush(stdin); 을 해줌으로써 버퍼를 비워주는 프로그래밍 기법이 있다. 하지만 이것은 엄밀히 말하면 틀린것이다. 더 정확히 이야기하자면 VC 에서만(아마도..) 된다. 사용자들의 편의를 위해 VC에서 확장의 개념으로 만든것이라 생각하면 이해가 쉬울 것이다. 그렇다면 왜 이것이 안되는 것일까? C FAQ 12.26을 보면 다음과 같은 […]
Continue reading about 리눅스(Unix)에서 fflush(stdin) 사용시 발생하는 문제점.
참으로 골치아픈 문제였다. 하지만 답은 간단했다. 문제의 시작점은 gethostbyaddr() 함수를 호출하면서 시작됐다. 210.125.213.93 (본인 블로그의 IP)주소. 어라???안돼네?? 무슨 문제일까….. 211.115.77.213 (daum 의 IP 주소). 이것도 안되네?? 무슨 문제가 있나보다….나는 책에 나온 예제를 다시 하나하나 비교를 하면서 혹시 있을지 모를 미스타이핑을 찾아보았다. 그런데…없.었.다. 도대체 무엇이 문제일까… 한참 고민을 하다가 디버깅을 해보았다. 역시나….gethostbyaddr()함수를 호출하는 부분에서 에러가 발생했다. 이 함수의 […]
이중 포인터란 포인터 변수를 가리키는 포인터라는 뜻이며 다른 말로 하면 포인터의 포인터라고 할 수 있다. 포인터 변수도 메모리를 차지하고 있으므로 이 변수도 당연히 번지가 있다. 따라서 이 번지를 가리키는 또 다른 포인터 변수를 선언할 수 있는 것이다. 이중 포인터 변수를 선언할 때는 * 구두점을 두 번 연속해서 쓴다. int **ppi; 이 선언에서 ppi는 […]
Recent Comments