VOP_LINK(9)

명칭
VOP_LINK - 파일의 새로운 이름의 작성

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

해설
이것은, 기존의 파일에 대해, 지정한 디렉토리안의 새로운 이름을 링크 합니다.

인수는 이하와 같습니다.

dvp 디렉토리의 vnode.

vp  링크 되는 파일의 vnode.

cnp 파일에 대한 패스명 정보.

패스명 정보는 돌아와 때에 개방되어야 하는 것이 아닙니다. 왜냐하면, 그것은 호출해 측에야는 행해지기 때문입니다. 디렉토리와 파일의 vnode 는 돌아와 때에 해방되어야 하는 것이 아닙니다.

락
VOP_LINK(9) (은)는 디렉토리 및 파일의 vnode 는 들어갈 때에 락 되어 돌아올 때까지 락 계속 되고 있는 것을 기대합니다.

반환값
파일이 성공리에 링크 되었을 경우에는 0 이 돌려주어 그렇지 않은 경우에는 에러가 돌려주어집니다.

유사 코드

    int
    vop_link(struct vnode *dvp, struct vnode *vp, struct componentname *cnp)
    {
        int error = 0;
        if (vp->v_mount ! = dvp->v_mount)
    	return (EXDEV);
        if (vp would have too many links)
    	return (EMLINK);
        if (vp is immutable)
    	return (EPERM);
        /*
         * vp 의 링크 카운트를 인크리먼트(increment) 해, 디스크에 써 되돌립니다.
         */
        ...;
        if (! error) {
    	/*
    	 * 디렉토리의 새로운 이름을 추가합니다.
    	 */
    	...;
        }
        return error;
    }

에러

[EMLINK]
    파일의 링크의 수가 너무 많습니다.

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

[EXDEV]
    다른 파일 시스템간으로는 하드 링크는 이용할 수 없습니다.

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

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