[완료] dup() 함수 사용 기법을 모르겠습니다.

1
point

int rc;
rc = fork( );

setpgrp(); //그룹 아이디 설정 <- 그룹 아이디를 설정 함으로 어떤 변화가 생기나요?

close( 0 ); //stdin
close( 1 ); //stdout
close( 2 ); //stderror

int fd = open( "/dev/null", O_RDWR ); // /dev/null을 읽고 쓴다. <- 쓰는 이유는 쓰레기값을 버리기 위해서 쓴다?
dup( fd ); //파일 기술자를 복사한다. <- 왜 두번 복사 해야 될까요?
dup( fd ); //파일 기술자를 복사한다.

return;

현재 소스를 분석 하고 있는데.. 정확히 어떤 목적으로 어떤 역활을 하려고 했는지.. 알수가 없네요. ㅠ_ㅠ.. 주석은 제가 찾아 다니면서..

달아 놓은겁니다. 생각 하자면.. 데몬을 목적으로 한것 같기도 한데.. ㅜ.ㅜ 알려주세요~~ ㅠ_ㅠ

kewlbear의 이미지
1160
points

Advanced Programming in the

1
point

Advanced Programming in the UNIX Environment 책을 읽어보시길 권합니다. 원서를 보시는 것이 좋습니다.

임수서룬뫼의 이미지
37562
points

허접한 실력이지만...

2
points

허접한 실력이지만... 대충 보면,
close(0),(1),(2)로 stdin, stdout, stderr을 닫아주고,
/dev/null을 open하면 stdin자리(0)에 열리겠죠?
그 다음에 dup을 함으로서 stdout, stderr(1, 2)자리에 열릴거구요.
그러면 stdin, stdout, stderr로 가는 모든 입출력이 /dev/null로 가겠죠?
그러면 /dev/null은 읽으면 0만 나오고 쓰면 사라지는 곳이므로,
모든 입출력은 잡아먹힙니다!
뭐 그런거 아닌가 싶네요.



[cppig1995@localhost cppig1995]$ make
make: *** No targets specified and no makefile found. 멈춤.
[cppig1995@localhost cppig1995]$ make idea
make: *** 목표 'idea'를 만들 규칙이 없음. 멈춤.

옷.. !! 감사합니다.

-1
points

아~~ 그렇게 쓰이는거구나 +_+.. 감사 합니다.

그리고 원서는 영어가.. 한글처럼 안읽혀요 ㅠ_ㅠ.. 사전으로~ ㅠ_ㅠ.

댓글 보기 옵션

원하시는 댓글 전시 방법을 선택한 다음 "설정 저장"을 누르셔서 적용하십시오.