구)홈페이지 오탈자 보기
초보자를 위한 Linux & Unix C 프로그래밍

 

페이지오탈자 내용등록일
5

((5p) 머리말)

독자를 위해 저자의 홈페이지(http://www.jejue.ac.kr/~jkim)를 운영하고 있어 독자들은 사이버 학습 효과도 누릴 수 있게 된다. [자료실] 코너를 통해 예제 프로그램 소스를 제공하고, [리눅스 C 프로그래밍] 코너에서는
==>
독자를 위해 카페(http://cafe.naver.com/computerbook)를 운영하고 있어 독자들은 사이버 학습 효과도 누릴 수 있게 된다. [Linux&Unix C]-[정오표&소스] 코너에서는 프로그램 소스와 정오표를 제공하고, [Linux&Unix C]-[질답 코너] 코너에서는

2006-10-251
67

((p 67) 제목)

C 프로그램 구조 이해하기
==>
연산자와 제어문    

2006-10-251
81

((p 81) [프로그램 3-7] 마지막)

프로그램 마지막 부분에 두 줄 누락
==>
08    printf("%u %u
", i>>1, i<<1);
09 }

2006-10-251
83

((P83) 프로그램 04줄)

04줄에 inc ch로 되어 있으나,
==>
캐릭터형으로 받아들이기 때문에 char ch 로 되어야 함

2006-10-251
104

((p 104) [프로그램 3-22] 라인 10)

printf("%d0", i); 
==>
printf("%d ", i);     

2006-10-251
124

((p 124) 세번째 문단 둘째줄)

변해
==>
변해도

2006-10-251
125

((p 125) [그림 5-5] 함수쪽)

func(int x, int y)
==>
func(int *x, int *y)

2006-10-251
180

((p 180) 예제 8-5 둘째줄)

/* strcpy, strncpy 함수가 정의된 헤더 파일 */
==>
/* strcat, strncat 함수가 정의된 헤더 파일 */   

2006-10-251
180

((p 180) 다섯번째 문단 첫째줄)

[프로그램 8-5]는 strcpy와 strncpy의 차이를     
==>
[프로그램 8-5]는 strcat과 strncat의 차이를

2006-10-251
215

((p 215) [그림 10-2] 위의 코드에서 다섯째줄)

struct student ptr;
==>
struct student *ptr;

2006-10-251
243

((p 243) 하단 그림의 숫자)

"123" -> 123
==>
"123" -> 83

2006-10-251
291

((p 291) 예제 13-4)

line 6 : void printtree(void **node, VISIT order, int depth);
line 32: void printtree(void **node, VISIT order, int depth)
==>
line 6 : void printtree(const void *node, const VISIT order, const int depth);
line 32: void printtree(const void *node, const VISIT order, const int depth)

2006-10-251
296

((pp. 296-297) [프로그램 13-5])

소스 두 줄 누락 및 실행 결과 수정
==>
소스에서 다음 두 줄이 추가되야 하고 동시에 라인 번호도 조절되야 합니다.

26 item.data = "Linux";
    :
35 item.data = "Java";
    :

그리고 실행결과에서

Found : Programming
==> Found : Linux

2006-10-251
363

((p 363) 마지막 문단)

그럼 이번에는 다음과 같이 touch 명령어로 c.h 파일을 재구성하고, make를 실행해 보자. test는 tes1.o, test2.o, test3.o에 의존하고 있고, 이 중 test2.o와 test3.o는 c.h에 의존하고 있다. 그런데 c.h 파일의 내용이 변경되었으므로 test2.o와 test3.o를 우선 새로 생성하고, 이 생성된 test2.o와 test3.o를 이용해 test를 새로 생성해야 하기 때문에 다음과 같이 동작한다.

[jkim@localhost chap17]$ touch c.h
==>
그럼 이번에는 다음과 같이 touch 명령어로 b.h 파일을 재구성하고, make를 실행해 보자. test는 tes1.o, test2.o, test3.o에 의존하고 있고, 이 중 test2.o와 test3.o는 b.h에 의존하고 있다. 그런데 b.h 파일의 내용이 변경되었으므로 test2.o와 test3.o를 우선 새로 생성하고, 이 생성된 test2.o와 test3.o를 이용해 test를 새로 생성해야 하기 때문에 다음과 같이 동작한다.

[jkim@localhost chap17]$ touch b.h  

2006-10-251
380

(p380 -s 옵션 실행부분)

[jkim@localhost chap17]$ make
==>
[jkim@localhost chap17]$ make -s

2006-10-251
414

((p 414) [프로그램 19-9])

03
==>
03 #include <errno.h>     

2006-10-251
433

((p 433) 31~34 라인)

31 /* 명령라인 인수가 2가 아니라는 것은 -n 옵션이 있다는 의미이므로 파일 이름을 
32     얻기 위해 argv를 1 증가 */ 
33 if(argc != 2) 
34 argv++;
==>
31 /* flag가 1이라는 것은 -n 옵션이 있다는 의미이므로 파일 이름을 
32     얻기 위해 argv를 1 증가 */ 
33 if(flag == 1) 
34 argv++;

2006-10-251
440

(p 440 프로그램 20-11의 06행)

char *home_dir, *work_idr;  
==>
char *home_dir, *work_idr, *tmp;

2006-10-251
481

((p 481) 끝에서 두번째 줄에 추가)

가리킨다.
==>
가리킨다. 이 상태에서 쓰기 동작을 하면 기존 내용은 지워지게 된다.

2006-10-251
511

((p 511) 위에서 9째줄)

다음은 이를 이용하면
==>
다음은 이를 이용하여

2006-10-251
532

(p 532 실행 예의 둘째줄)

[jkim@localhost program]$ a.out 
==>
[jkim@localhost program]$ a.out dir

2006-10-251
533

((p 533) closedir 함수 설명표 6째줄)

name : 닫고자 하는 디렉토리 이름
==>
dir : 닫고자 하는 디렉토리 정보에 대한 포인터

2006-10-251
23602

(602)


602페이지의 22번째 줄에 gets(buf); 가 있습니다.
gets는 오버플로우가 발생하는 문제점이 있으므로,
최신 버전에서 컴파일을 하게 되면 경고메시지를 보여주고 컴파일을 완료할 수 없습니다.
따라서 이 부분을 fgets(buf, 256, stdin); 으로 변경해주면 컴파일이 됩니다.
파일에서 입력받는 부분을 받는 함수이지만, 3번째 인자에 stdin을 쓰게 되면, 표준입력(키보드)를 통해 입력받아 사용 가능합니다. 

2008-05-303
606

((p. 606) 소스 코드 13번줄)

13     strcat(str, "");
==>
13     strcat(str, " ");

2006-10-251
23606

(p606 소스코드)

페이지 606에 소스 코드를 보시면요

7번째줄에

char *str로 포인터를 잡았는데요

나중에 12번째 줄에서 여기에 strcat으로 문자열 append 하면

에러가 나게 됩니다. (세그먼테이션 오류)

따라서 char *str 대신에

char 배열을 잡아주는게 올바릅니다.

2007-03-281
23606

((p. 606) 08 행 다음 줄)


(p. 606) 08 행 다음 줄  

다음 내용을 삽입하고
09 str = (char *)malloc(100*sizeof(char));

09~19행 번호를 10~20으로 수정  
 

2007-08-293
627

((p 627) 실행 결과 8째줄)

... 블록화되었던 ^Z 시그널 해제되어 프로세스 종료됨
==>
... 블록화되었던 ^Z 시그널 해제되어 프로세스 멈춤

2006-10-251
627

((p 627) 첫번째 문단 셋째줄)

로세스가 종료된다.
==>
로세스가 멈추게 된다.

2006-10-251
629

((p 629) 실행 결과 6째줄)

^Z   ... 프로세스 종료됨
==>
^Z   ... 프로세스 멈춤

2006-10-251
645

((p. 645) 실행 결과 5번째 줄)

SIGINT wake up
==>
SIGINT unblock

2006-10-251
676

((p676) 첫번째 문단 첫째줄)

세 번째 인수인 type은
==>
두 번째 인수인 type은

2006-10-251
680

((p 680) 두번째 문단 아래 코드)

pipe(pipes);
==>
int pipes[2];
pipe(pipes);

2006-10-251
727

((p 727) 아래에서 8번째 줄)

공유 메모리를 이용해 여러 프로세스에게 보내는 데이터 받기
==>
공유 메모리를 이용해 여러 프로세스에서 보내는 데이터 받기

2006-10-251