728x90

입출 스트림의 분리

- 프로세스 기반의 분리 : write용 프로세스, read용 프로세스 fork를 통한 분리

- FILE 구조체 포인터 기반의 분리 : FILE 구조체를 각각 write와 read로 관리

	readfp=fdopen(sock, "r");
	writefp=fdopen(sock, "w");	

 

스트림 분리 이후 half-close의 문제

- half-close : EOF를 전달하여 더 이상 보낼 데이터가 없다고 알리고 출력 스트림을 닫아버림

- fclose를 통해 FILE* 를 닫으면 연결된 파일 디스크립터도 close가 되어버림

- write에 사용하고 있던 FILE*를 닫으면 read도 제대로 이루어지지 않음

int main(int argc, char *argv[])
{
	FILE * readfp;
	FILE * writefp;
	...;

	readfp=fdopen(sock, "r");
	writefp=fdopen(sock, "w");	
	...;

	fclose(writefp);
    	...;
    	fgets(buf, sizoef(buf), readfp);
    
    	fclose(readfp);
	return 0;
}

 

728x90

+ Recent posts