리눅스 프로그래밍을 하다가 문제가 생겼습니다.
글쓴이: kcycj / 작성시간: 일, 2014/10/12 - 4:57오후
대학교에서 운영체제를 배우고 있는 학생입니다.
우분투에서 Operating system concepts 9판 교재 141~142 페이지에 있는 코드를 그대로 작성해 실행해봤는데
원하는 결과가 나오지 않아 질문드립니다.
간단한 파이프통신 문제같은데 터미널 화면에서 글씨가 깨져서 나온 것 같습니다.
소스코드는 다음과 같으며 결과화면은 캡쳐하여 첨부하였습니다.
#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#define BUFFER_SIZE 25
#define READ_END 0
#define WRITE_END 1
int main(void)
{
char write_msg[BUFFER_SIZE]="Greetings";
char read_msg[BUFFER_SIZE];
int fd[2]={0,1};
pid_t pid;
// create the pipe
if(pipe(fd)==-1)
{
fprintf(stderr,"Pipe failed");
return 1;
}
//fork a child process
pid=fork();
//parent process
if(pid<0)
{
//close the unused end of the pipe
close(fd[READ_END]);
//write to the pipe
write(fd[WRITE_END],write_msg,strlen(write_msg)+1);
//close the read end of the pipe
close(fd[WRITE_END]);
}
//child process
else
{
//close the unused end of the pipe
close(fd[WRITE_END]);
//read from the pipe
read(fd[READ_END],read_msg,BUFFER_SIZE);
printf("read %s",read_msg);
//close the write end of the pipe
close(fd[READ_END]);
}
return 0;
}File attachments:
| 첨부 | 파일 크기 |
|---|---|
| 85.55 KB |
Forums:


아 해결했습니다.
글삭제하는법을 모르겠네요..
두번째 if문에서 if(pid>0)을 if(pid<0)이라고 잘못썻습니다ㅠㅠ
댓글 달기