Xmanager 게시판

fork, link, dup,waiy함수에 대해서...

최종입력: 2000-10-25 00:00 - 넷사랑 | 답글: 1건

 
2000-10-24 00:00 - 알려줘요

fork, link, dup,waiy함수에 대해서...

 
fork, dup, link 함수에 대해서 정확히 알고 싶습니다...
간단히 보기는 했지만 이해가 안됩니다....아래의 내용에
쓰인 함수가 어떻게 쓰인건지.... 그리고 close(1) 이런건
뭔가요... close 는 알겠는데...
갑자기 너무 생소한 힘수들이 많이 나오는군요...
자세한 설명 부탁드립니다....


#include
#include
#include
#include
struct link_handle {
int pipefd1[2], pipefd2[2];
int pid;
FILE *fpin, *fpout;
};








#include "link.h"

void link_open(struct link_handle *l, char *name, char *param)
{
pipe(l->pipefd1);
pipe(l->pipefd2);

if ( (l->pid=fork()) == 0 ) {
close(l->pipefd1[0]);
close(1);
dup(l->pipefd1[1]);
close(2);
dup(l->pipefd1[1]);

close(l->pipefd2[1]);
close(0);
dup(l->pipefd2[0]);
execlp(name, name, param, (char*) 0);
}
else {
l->fpin = fdopen(l->pipefd1[0], "r");
l->fpout = fdopen(l->pipefd2[1], "w");
close(l->pipefd1[1]);
close(l->pipefd2[0]);
}
}

void link_close(struct link_handle *l)
{
wait((union wait *) 0);
close(l->pipefd1[1]);
close(l->pipefd2[0]);
fclose(l->fpin);
fclose(l->fpout);
l->pid = 0;
}

int link_read(struct link_handle *l, char *s)
{
int eof_flag;

if ( fgets(s, 100, l->fpin) == NULL ) eof_flag = 1;
else { s[strlen(s)-1] = 0; eof_flag = 0; }

return eof_flag;
}


2000-10-25 00:00 - 넷사랑

Re: fork, link, dup,wait함수에 대해서...

 
Xmanager와 관계없는 질문을 다른 게시판을 이용해 주시기 바랍니다.

fork, link, dup, wait 함수는 Unix system programming 관련 책을
참고해 주세요. 구체적으로 어떤 부분이 이해가 안가는 지를 말씀하셔야
답변 드릴 수 있습니다. 모두 이해가 안간다면 게시판에서 답변 드리기는
힘들 것 같습니다.

close(1)은 stdin을 닫는다는 얘기입니다. close(fd)은 인수는
file descriptor입니다. fork는 child process를 생성할 때 쓰는데
child process는 parent process의 stdin, stdout등을 그대로 공유하기
때문에 close로 닫아 주는 경우가 있습니다.

자세한 내용은 Unix network programming, Unix system programming관련
서적을 참고해 주시고 이해가 안되는 부분은 하나씩 질문해 주시면
감사하겠습니다.