Unix-system-calls-getgroups

提供:Dev Guides
移動先:案内検索

[top]#

[[File:]]

[[File:]]

|Web |This Site

  • 初心者向けのUnix *
  • 高度なUnix *

選択した読書

Copyright©2014 by finddevguides

  Home     References     Discussion Forums     About TP  

getgroups()-Unix、Linuxシステムコール

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] image:http://www.finddevguides.com/add- this.gif [AddThisソーシャルブックマークボタン]

広告

NAME

getgroups、setgroups-補助グループIDのリストの取得/設定

概要

  • #include <sys/types.h> * *#include <unistd.h> *
*int getgroups(int* __size __ **、gid_t * *__list __*  *[]);* *
  • #include <grp.h> *
*int setgroups(size_t* __size __ **、const gid_t ** *__ list __* *); **

説明

Tag

説明

*getgroups* ()

(呼び出しプロセスの)最大_size_の補助グループIDが_list_に返されます。 呼び出しプロセスの有効なグループIDが返されるリストに含まれるかどうかは指定されていません。 (したがって、アプリケーションは getegid (2)を呼び出して、結果の値を追加または削除する必要があります。)_size_がゼロの場合、_list_は変更されませんが、プロセスの補助グループIDの総数が返されます。

*setgroups* ()

プロセスの補助グループIDを設定します。 適切な特権(Linux: CAP_SETGID 機能)が必要です。

返り値

Tag

説明

*getgroups* ()

成功すると、補足グループIDの数が返されます。 エラーの場合、-1が返され、_errno_が適切に設定されます。

*setgroups* ()

成功すると、ゼロが返されます。 エラーの場合、-1が返され、_errno_が適切に設定されます。

エラー

Tag Description
EFAULT list has an invalid address.
*EINVAL * For* setgroups*(), size is greater than NGROUPS *(32 for Linux 2.0.32). For getgroups*(), size is less than the number of supplementary group IDs, but is not zero.
*EPERM * The calling process has insufficient privilege to call* setgroups*().

ノート

プロセスは、有効なグループIDに加えて、少なくともNGROUPS_MAXまでの補助グループIDを持つことができます。 補助グループIDのセットは親プロセスから継承され、 setgroups ()を使用して変更できます。 補助グループIDの最大数は、 sysconf (3)を使用して見つけることができます。

long ngroups_max; ngroups_max = sysconf(_SC_NGROUPS_MAX);
*getgroups* ()の最大戻り値は、この方法で取得した値よりも1を超えることはできません。
*setgroups* ()のプロトタイプは、 *_ BSD_SOURCE* が定義されている場合にのみ利用可能です。

準拠

SVr4、4.3BSD。 getgroups ()関数はPOSIX.1-2001にあります。 setgroups ()は特権を必要とするため、POSIX.1-2001でカバーされていません。

関連項目

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] [[File:]]

広告

  
Advertisements