popen으로 mount실행시 좀비로 남는 문제가..
글쓴이: lee3390 / 작성시간: 화, 2007/01/30 - 4:50오후
제 프로그램 중 NAS와 mount가 잘 되었는지 확인을 하고 mount가 안되었을 경우
popen을 사용하여 mount를 해주는 부분이 있습니다. 이것은 계속 루프를 돌면서 체크하고요
근데 이것이 NAS와 연결이 안되어 있는 상태에서 실행을 하게되면
NAS와 mount가 안되어 있으니 mount시도를 하고 mount가 안되면 종료가 잘 되면 좋은데..
popen으로 생성된 프로세스가 좀비 상태로 남아 버립니다...
계속 좀비가 생겨 결국 시스템 다운 상태까지 갑니다...
popen으로 mount실패 하였을 경우 좀비 안나오게 하는 방법이 있는지..
아니면 C api중 nas mount해주는 함수가 있는지.. 알고 싶습니다.
sprintf(strCmd, "%s -F nfs %s:%s %s 2>&1", SYS_MOUNT_CMD, strIp, strSpecial, strMountPos); if((pFp = popen(strCmd, "r")) == NULL) { cprintf("[ENGINE|INF] NfsMount popen fail(%s)", strerror(errno)); return; }
Forums:
열었으면...
닫아주세요~~ ^^a
자동으로닫힌다면 패스 ㅡㅡ;;
----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~
----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~
아.. 소스에 빼먹은게 있었군요
pclose(pFp);
이것도 같이 있습니다. ^^;
2>&1 에 의해
2>&1 에 의해 SYS_MOUNT_CMD 의 stderr 출력도 stdout 으로 redirect 되므로, popen() 이 성공을 했다면 출력된 문자열을 읽어서 성공인지 실패인지 판단하는 부분이 있어야 될 것 같은데 안뵈네요 ?
SYS_MOUNT_CMD 가 뭔진모르겠지만 mount() 로 적당히 집적거릴 수 없는 놈인가요 ?
SYS_MOUNT_CMD는
그냥 /bin/mount 를 define해논 것입니다.
테스트로 쉘상에서 mount -F nfs 192.158.30.1:/home /tt 2>&1 이 명령을 해보니까..
그냥 그냥 그대로 멈춰버리네요;;; timeout같은 것은 없나봐요.. 이걸 어찌 처리를 해야할지..
man 2 mount 를 해보니
man 2 mount 를 해보니 nfs 도 지원하는 듯 하네요.
테스트는 안해봐서 잘 될지는 모르겠습니다.
---------------------
댓글 달기