inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

리눅스 시스템 프로그래밍

Pipe-1

17분 2초에

88

나는그네

작성한 질문수 5

0

17분 2초 쯤

printf("%s\n", inbuf);

의 출력 결과가 hello, world #1 이고

나머지 데이터가 안 찍힌 이유로

개행이 없다고 설명해 주셨는데

이 부분이 조금 애매한 것 같습니다.

 

inbuf 에는 아래와 같이

hello, world #1\0hello, world #2\0hello, world #3

입력한 데이터가 다 들어있고 널문자까지 있습니다.


그걸 printf("%s\n" ...) 출력하다 보니

버퍼 중간의 null 을 만나서 문자열 끝으로 인식해서 출력이 종료된고

 

write 함수로 MSGSIZE 대신 null 문자를 제외한 사이즈 MSGSIZE - 1 로 출력하면
printf 가 msg1, msg2, mg3을 다 찍네요
null 이 없어서 이상한 문자가 출력되지만요...

linux 운영체제 linux-kernel ipc pthread system-programming

답변 1

0

김정인

안녕하세요.

말씀하신 대로 설명이 애매 한게 있네요.

hello, world #1만 출력되는 이유는 \n가 없어서가 아니라 msg1, msg2, msg3 까지는 버퍼에 읽었지만 printf가 hello, world#1\0 까자만 첫번째 문장으로 해석해서 출력했기 때문이 맞습니다.

printf("%s\n", inbuf) 문에서 \n가 없었으면 전체가 안찍혀야 맞는데 \n가 있어서 첫번째 문장만 한문장으로 인식하여 출력된 것입니다.

좋은 지적 감사합니다.

안녕하세요 큰돌님!

0

63

2

강의 잘못된부분

0

34

1

컴퓨터구조론에 관해서

0

41

1

mac m1 환경도 가능할까요

0

30

1

uC/OS-II RTOS 포팅 관련 질문

0

41

2

Sleep 함수와 우연 그리고 CPU로 랜덤뽑기

0

47

3

민구님 설치시 또 막혀서 질문드려요

0

55

2

git clone 명령어를 어디 터미널에다 붙여넣어야 하나요?

0

58

2

html 파일을 못 불러 옵니다.

0

63

2

결재했는데도 강좌가 안보입니다.

0

59

1

다음 강의는 언제 올려주시는지요?

0

102

3

안녕하세요. 계속 프로젝트를 해야지 하다가 결제하고 환경 설정 중입니다.

0

45

1

REST API (Self-descriptive messages)

0

54

1

프로젝트 질문 문의

0

101

1

시스템 엔지니어 관련 질문입니다.

0

100

2

Unauthorized 에러

0

106

2

inotify 객체에 등록된 watch descriptor 해제 관련 질문

0

69

2

select API 실습 코드 질문

0

75

2

만약에 포팅을 할때 1년에 한번 잡는 치명적인 문제를 해결하는 코드가 들어갔다고 가정하면

0

99

2

CFLAGS에 -c 옵션 넣는게 맞는지 궁금합니다.

0

75

1

함수 메뉴얼을 보기 위한 단축키

0

115

1

혹시 고급과정의 경우 하반기 몆월쯤 나올까요?

0

129

2

혹시 고급과정도 출시가 되는지요?

0

172

1

네트워크 환경설정 오류

0

415

1