编写应用程序时,请注意以下问题:
不存在可以显式创建新项目的函数。
如果 project 数据库中不存在用户的缺省项目,则该用户无法登录。
用户登录时,系统会在该用户的缺省项目中创建新任务。
进程与新项目的关联会将新项目的资源控制和池成员关系应用于进程。
setproject() 需要权限。如果您拥有进程,则 newtask 命令不需要权限。虽然二者均可用于创建任务,但仅有 newtask 可以更改运行的进程对应的项目。
任务之间不存在任何父/子关系。
可以使用 newtask -F 或setproject() 来创建最终任务,从而将调用方与新项目关联。尝试准确估计总体资源记帐时,最终任务非常有用。
可重复执行函数 getprojent()、getprojbyname()、getprojbyid()、getdefaultproj() 和 inproj() 会使用调用方提供的缓冲区来存储返回的结果。在单线程应用程序和多线程应用程序中可以安全地使用这些函数。
可重复执行函数需要以下附加参数: proj、buffer 和 bufsize。proj 参数必须是指向调用方所分配的 project 结构的指针。成功完成后,这些函数将返回此结构中的项目项。project 结构所引用的存储空间是从 buffer 参数指定的内存中分配的。bufsize 用于指定大小(以字节数表示)。
如果使用不正确的缓冲区大小,则 getprojent() 会返回 NULL,并将 errno 设置为 ERANGE。