Go to main content
リソース管理および Oracle® Solaris ゾーン開発者ガイド

印刷ビューの終了

更新: 2016 年 11 月
 
 

project データベースのエントリにアクセスするためのコード例

使用例 1  project データベースの各エントリの最初の 3 つのフィールドを出力する

この例では、次の重要な点に注意してください。

  • setprojent() は、最初から開始するために project データベースを巻き戻します。

  • getprojent() は、project.h で定義されている保守的な最大バッファーサイズで呼び出されます。

  • endprojent() は、project データベースをクローズし、リソースを解放します。

#include <project.h>

struct project projent;
char buffer[PROJECT_BUFSZ]; /* Use safe buffer size from project.h */
	...
struct project *pp;

setprojent();  /* Rewind the project database to start at the beginning */

while (1) {
   pp = getprojent(&projent, buffer, PROJECT_BUFSZ);
	  if (pp == NULL)
          break;
    printf("%s:%d:%s\n", pp->pj_name, pp->pj_projid, pp->pj_comment);
		...
};

endprojent();   /* Close the database and free project resources */
使用例 2  呼び出し元のプロジェクト ID に一致する project データベースエントリを取得する

次の例では、getprojbyid() を呼び出して、呼び出し元のプロジェクト ID に一致するプロジェクトデータベースエントリを取得します。この例では、次にプロジェクト名とプロジェクト ID を出力します。

#include <project.h>

struct project *pj;
char buffer[PROJECT_BUFSZ]; /* Use safe buffer size from project.h */

main()
{
   projid_t pjid;
   pjid = getprojid();
   pj = getprojbyid(pjid, &projent, buffer, PROJECT_BUFSZ);
   if (pj == NULL) {
       /* fail; */
   }
   printf("My project (name, id) is (%s, %d)\n", pp->pj_name, pp->pj_projid);
}