rmprojdb 子例程
用途
从指定的项目数据库中除去指定的项目定义。
库
libaacct.a 库。
语法
<sys/aacct.h>
rmprojdb(void *handle, struct project *project, int flag)
描述
rmprojdb 子例程从 处理 参数指定的项目中除去存储在 struct 项目变量中的项目定义。 在调用此子例程之前,必须初始化项目数据库。 提供 普罗杰德巴洛茨 和 Projdbfinit 子例程是为了实现此目的。 如果提供的项目定义在指定的项目数据库中不存在,那么 rmprojdb 子例程将返回 -1 并将 errno 设置为 ENOENT。
rmprojdb 子例程将一个指向项目结构的指针作为输入参数。 这个指向项目结构的指针保存了需要除去的项目的名称或编号。 标志参数设置为指示是否提供了名称或数字作为输入,如下所示:
- PROJ_NAME-指示提供的项目定义仅具有项目名称。
- PROJ_NUM-指示所提供的项目定义仅具有项目编号。
有一个与项目数据库关联的内部状态 (即当前项目)。 在初始化项目数据库时,当前项目是数据库中的第一个项目。 rmprojdb 子例程除去指定的项目并将内部当前项目重新定位到第一个项目定义。
参数
| 项 | 描述 |
|---|---|
| 句柄 (handle) | 指向项目数据库句柄的指针。 |
| project | 指向一个项目结构的指针,该项目结构包含要添加的项目的定义。 |
| 标记 | 整数标志,用于指示是否提供了项目的名称或编号。 |
安全性
仅适用于特权用户。 可以通过向用户授予 CAP_AACCT 功能来将特权扩展至非 root 用户。
返回值
| 项 | 描述 |
|---|---|
| 0 | 成功 |
| -1 | 失败 |
错误代码
| 项 | 描述 |
|---|---|
| ENOENT | 项目定义不存在 |
| EPERM | 已拒绝许可权。 该用户不是具有特权的用户。 |
| EINVAL | 传递的指针为 NULL ,或者 旗 参数包含无效值。 |