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() 的最大返回值不能大於透過這種方式獲得的值加 1。

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

符合標準

SVr4、4.3BSD。getgroups() 函式在 POSIX.1-2001 中。由於 setgroups() 需要許可權,因此 POSIX.1-2001 未涵蓋它。

參見



previous next Printer Friendly

廣告


  

廣告



廣告
© . All rights reserved.