파이프 질문입니다~

luftpalen의 이미지

Wrox 빨간책 Beginning of Linux Programming 에서 파이프 관련 예제를 똑같이 쳤습니다.

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define BUFSIZE 256
int main()
{
	FILE* read_fp;
	char buffer[BUFSIZE+1];
	int chars_read;

	memset(buffer, 0x00 , sizeof(buffer));
	read_fp = popen("ps -ax", "r");
	if(read_fp != NULL)
	{
		chars_read = fread(buffer, sizeof(char), BUFSIZ , read_fp);
		while(chars_read >0)
		{
			buffer[chars_read -1] = '\0';
			printf("Reading : -\n %s \n", buffer);
			chars_read = fread(buffer, sizeof(char), BUFSIZ, read_fp);
		}
		pclose(read_fp);
		exit(EXIT_SUCCESS);
	}
	exit(EXIT_FAILURE);
}



디버깅을 해보니
chars_read = fread(buffer, sizeof(char), BUFSIZ, read_fp);
이 줄을 두번째 실행한 부분에서 Segmentation Fault 가 나더군요. 물론 BUFSIZE 를 크게해서 한번에 다 읽어들이면 문제가 없습니다만, 크기가 얼마나 들어올지 모르는 상황에서 이 문제를 어찌해야 할까요?
superkkt의 이미지

fread에서 BUFSIZ가 BUFSIZE로 바뀌어야 하지않나요?

======================
BLOG : http://superkkt.com

luftpalen의 이미지

이런 제 어처구니 없는 실수였네요 ㅠㅠ 아 쪽팔려 ;;; 이거가지고 왜 몇시간이나 끙끙댔을까 -_-;;