VOP_REMOVE(9)

명칭
VOP_REMOVE, VOP_RMDIR - 파일 또는 디렉토리의 삭제

서식
<sys/param.h> <sys/vnode.h> int VOP_REMOVE(struct vnode *dvp, struct vnode *vp, struct componentname *cnp) int VOP_RMDIR(struct vnode *dvp, struct vnode *vp, struct componentname *cnp)

해설
이러한 엔트리 포인트는, 각각 파일과 디렉토리를 삭제합니다.

인수는 이하와 같습니다.

dvp 디렉토리의 vnode.

vp  삭제 대상 파일의 vnode.

cnp 파일의 패스명 정보.

락
dvp 및 vp 모두, 들어갈 때에 락 되고 있어야 하는 것으로, 귀가시도 락 계속 되고 있습니다.

반환값
성공시에는 0 이 돌려주어져 그렇지 않은 경우에는 에러 코드가 돌려주어집니다.

유사 코드

    int
    vop_remove(struct vnode *dvp, struct vnode *vp, struct componentname *cnp)
    {
        int error = 0;
        if (vp is immutable) {
    	error = EPERM;
    	goto out;
        }
        /*
         * 디렉토리로부터 cnp->cn_nameptr 의 이름을 삭제해, vp 의 링크
         * 카운트를 갱신합니다.
         */
        ...;
        /*
         * ". " 의 삭제를 시도하는 경우는 주의해 주세요. XXX 이것은 보다
         * 상층에서 취급되어야 합니다.
         */
        if (dvp == vp)
    	vrele(vp);
        else
    	vput(vp);
        vput(dvp);
        return error;
    }

에러

[EPERM]
    파일은 변경 불가능합니다.

[ENOTEMPTY]
    하늘이 아닌 디렉토리를 삭제하려고 했습니다.

관련 항목
vnode(9), VOP_LOOKUP(9)

저자
이 메뉴얼 페이지는 Doug Rabson 하지만 썼습니다.