tail head cat sleep
QR code linking to this page

manページ  — VOP_REMOVE

名称

VOP_REMOVE, VOP_RMDIR – ファイルまたはディレクトリの削除

内容

書式

#include <sys/param.h>
#include <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 が書きました。

VOP_REMOVE (9) July 24, 1996

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

… one of the main causes of the fall of the Roman Empire was that, lacking zero, they had no way to indicate successful termination of their C programs.
— Robert Firth