getgroups() - Unix,Linux 系統呼叫 - 技術教學
Tutorials Point


  Unix 初學者指南
  Unix Shell 程式設計
  高階 Unix
  Unix 有用參考
  Unix 有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考     討論論壇     關於 TP  

getgroups() - Unix,Linux 系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

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);

描述

標籤描述
getgroups()
 最多 size 個呼叫程序的輔助組 ID 將返回到 list 中。呼叫程序的有效組 ID 是否包含在返回列表中是不確定的。(因此,應用程式還應該呼叫 getegid(2) 並新增或刪除結果值。)如果 size 為零,則 list 不被修改,但會返回程序的輔助組 ID 的總數。
setgroups()
 設定程序的輔助組 ID。需要適當的許可權(Linux:CAP_SETGID 功能)。

返回值

標籤描述
getgroups()
 成功時,返回輔助組 ID 的數量。失敗時,返回 -1,並相應地設定 errno
setgroups()
 成功時,返回零。失敗時,返回 -1,並相應地設定 errno

錯誤

標籤描述
EFAULT list 的地址無效。
EINVAL 對於 setgroups(),size 大於 NGROUPS(對於 Linux 2.0.32 為 32)。對於 getgroups(),size 小於輔助組 ID 的數量,但不是零。
EPERM 呼叫程序沒有足夠的許可權來呼叫 setgroups()。

備註

除了有效組 ID 之外,一個程序最多可以有 NGROUPS_MAX 個輔助組 ID。輔助組 ID 集從父程序繼承,可以使用 setgroups() 更改。可以使用 sysconf(3) 找到輔助組 ID 的最大數量。
    long ngroups_max;
    ngroups_max = sysconf(_SC_NGROUPS_MAX);
getgroups() 的最大返回值不能大於透過這種方式獲得的值加一。

只有在定義了 _BSD_SOURCE 時,setgroups() 的原型才可用。

符合標準

SVr4、4.3BSD。getgroups() 函式在 POSIX.1-2001 中。由於 setgroups() 需要許可權,因此它不受 POSIX.1-2001 的約束。

參見



previous next Printer Friendly

廣告


  

廣告



廣告