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.

Ken Thompson has an automobile which he helped design. Unlike most automobiles, it has neither speedometer, nor gas gauge, nor any of the other numerous idiot lights which plague the modern driver. Rather, if the driver makes a mistake, a giant “?” lights up in the center of the dashboard. “The experienced driver,” says Thompson, “will usually know what's wrong.”