在C语言编程中设置和获取代码组数的方法

C语言setgroups()函数:设置组代码函数
头文件:

 #include <grp.h>

定义函数:

int setgroups(size_t size, const gid_t * list);

函数说明:setgroups()用来将list 数组中所标明的组加入到目前进程的组设置中. 参数size 为list()的gid_t 数目, 最大值为NGROUP(32)。

返回值:设置成功则返回0, 如有错误则返回-1.

错误代码:

  • EFAULT:参数list 数组地址不合法.
  • EPERM:权限不足, 必须是root 权限
  • EINVAL:参数size 值大于NGROUP(32).

C语言getgroups()函数:获取组代码函数
头文件:

#include <unistd.h>  #include <sys/types.h>

定义函数:

int getgroups(int size, gid_t list[]);

函数说明:getgroup() 用来取得目前用户所属的组代码. 参数size 为list() 所能容纳的gid_t 数目. 如果参数size 值为零, 此函数仅会返回用户所属的组数。

返回值:返回组识别码, 如有错误则返回-1.

错误代码:

  • EFAULT:参数list 数组地址不合法.
  • EINVAL:参数size 值不足以容纳所有的组.

范例

#include <unistd.h>
#include <sys/types.h>
main()
{
  gid_t list[500];
  int x, i;
  x = getgroups(0, list);
  getgroups(x, list);
  for(i = 0; i < x; i++)
    printf("%d:%d\n", i, list[i]);
}

执行:

0:00
1:01
2:02
3:03
4:04
5:06
6:10
(0)

相关推荐

  • C语言编程中从密码文件获取数据的函数总结

    C语言getpw()函数:取得指定用户的密码文件数据 头文件: #include <pwd.h> #include <sys/types.h> 定义函数: int getpw(uid_t uid, char *buf); 函数说明:getpw()会从/etc/passwd中查找符合参数uid所指定的用户账号数据, 找不到相关数据就返回-1. 所返回的buf 字符串格式如下: 账号:密码:用户识别码(uid):组识别码(gid):全名:根目录:shell 返回值:返回 0 表示成功,

  • C语言中的setlinebuf()、utmpname()、rewind函数使用

    C语言setlinebuf()函数:设置文件流为线性缓冲区 头文件: #include <stdio.h> 定义函数: void setlinebuf(FILE * stream); 函数说明:setlinebuf()用来设置文件流以换行为依据的无缓冲IO. 相当于调用:setvbuf(stream, (char*)NULL, _IOLBF, 0);请参考setvbuf(). C语言utmpname()函数:设置文件路径 头文件: #include <utmp.h> 定义函数: v

  • C语言读取文件流的相关函数用法简介

    C语言fread()函数:读文件函数(从文件流读取数据) 头文件: #include <stdio.h> 定义函数: size_t fread(void * ptr, size_t size, size_t nmemb, FILE * stream); 函数说明:fread()用来从文件流中读取数据. 参数stream 为已打开的文件指针, 参数ptr 指向欲存放读取进来的数据空间, 读取的字符数以参数size*nmemb 来决定. Fread()会返回实际读取到的nmemb 数目, 如果此值

  • 在C语言编程中设置和获取代码组数的方法

    C语言setgroups()函数:设置组代码函数 头文件: #include <grp.h> 定义函数: int setgroups(size_t size, const gid_t * list); 函数说明:setgroups()用来将list 数组中所标明的组加入到目前进程的组设置中. 参数size 为list()的gid_t 数目, 最大值为NGROUP(32). 返回值:设置成功则返回0, 如有错误则返回-1. 错误代码: EFAULT:参数list 数组地址不合法. EPERM:权

  • C语言编程中建立和解除内存映射的方法

    C语言mmap()函数:建立内存映射 头文件: #include <unistd.h> #include <sys/mman.h> 定义函数:void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offsize); 函数说明:mmap()用来将某个文件内容映射到内存中,对该内存区域的存取即是直接对该文件内容的读写. 参数说明: 返回值:若映射成功则返回映射区的内存起始地址,否则返回MAP_

  • Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析

    本文实例讲述了Yii2中设置与获取别名的函数(setAlias和getAlias)用法.分享给大家供大家参考,具体如下: 首先说说什么是别名. 在Yii中有很多的路径,在开发的过程当前我们也会使用一些路径.一般来说都需要使用绝对路径,但绝对路径都很长. 所以,为了方便的使用路径,可以在Yi中i给每个路径起个名称,这个名称就是别名. 别名的格式: 别名必须以"@"字符开头,别名中还可以包含"/".如("@www"为根别名,"@www/te

  • vue中设置、获取、删除cookie的方法

    1.在src目录下的access下新建一个cookie.js, 内容如下: export function setCookie(c_name,value,expire) { var date=new Date() date.setSeconds(date.getSeconds()+expire) document.cookie=c_name+ "="+escape(value)+"; expires="+date.toGMTString() //console.lo

  • C语言编程中常见的五种错误及对应解决方案

    目录 1. 未初始化的变量 2. 数组越界 3. 字符串溢出 4. 重复释放内存 5. 使用无效的文件指针 前言: C 语言有时名声不太好,因为它不像近期的编程语言(比如 Rust)那样具有内存安全性.但是通过额外的代码,一些最常见和严重的 C 语言错误是可以避免的. 即使是最好的程序员也无法完全避免错误.这些错误可能会引入安全漏洞.导致程序崩溃或产生意外操作,具体影响要取决于程序的运行逻辑. 下文讲解了可能影响应用程序的五个错误以及避免它们的方法: 1. 未初始化的变量 程序启动时,系统会为其

  • Android编程实现通过反射获取资源Id的方法

    本文实例讲述了Android编程实现通过反射获取资源Id的方法.分享给大家供大家参考,具体如下: 在将自己写的工具打成.jar包的时候,有时候会需要引用到res中的资源,这时候不能将资源一起打包,只能通过反射机制动态的获取资源. 特别用在自己定义一个工具将其打成.jar包时,特别注意资源的获取 1.封装成一个工具类 package com.cp.utils; import android.content.Context; public class CPResourceUtil { public

  • SpringBoot2中使用@RequestHeader获取请求头的方法

    目录 一.使用@RequestHeader获取请求头 (一)获取某一个请求头 (二)获取数值型请求头 (三)一次性获取所有请求头 二.@RequestHeader注解详解 (一)name.value属性 (二)required属性 (三)defaultValue属性 springMVC/SpringBoot中提供了@RequestHeader注解用来获取请求头. 一.使用@RequestHeader获取请求头 (一)获取某一个请求头 例如,获取accept-language请求头: @GetMa

  • Vmware中桥接无法获取IP的解决方法

    Vmware设置虚拟操作系统网卡为桥接模式后,本应该和本地网卡获取到同一网段的IP的,但现在突然无法获取到IP设置,原因是什么呢?经过查看,发现Vmware中的网络编辑器中的桥接网卡桥接到了一个虚拟网卡上,更改到物理网卡后,虚拟机中的操作系统就获取到了地址,点[编辑]-- [虚拟网络编辑器] – [更改设置] – 选中VMnet0,类型为桥接模式的那个卡,在已桥接至后边,选择你的物理网卡,如图: Vmware设置虚拟操作系统网卡为桥接模式后,本应该和本地网卡获取到同一网段的IP的,但现在突然无法

  • iOS中设置清除缓存功能的实现方法

    绝大多数应用中都存在着清楚缓存的功能,形形色色,各有千秋,现为大家介绍一种最基础的清除缓存的方法.清除缓存基本上都是在设置界面的某一个Cell,于是我们可以把清除缓存封装在某一个自定义Cell中,如下图所示: 具体步骤 使用注意:过程中需要用到第三方库,请提前安装好:SDWebImage.SVProgressHUD. 1. 创建自定义Cell,命名为GYLClearCacheCell 重写initWithStyle:(UITableViewCellStyle)style reuseIdentif

  • Linux中scp命令获取远程文件的方法

    一.scp是什么? scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的,可能会稍微影响一下速度. 二.scp有什么用? 1.我们需要获得远程服务器上的某个文件,远程服务器既没有配置ftp服务器,没有开启web服务器,也没有做共享,无法通过常规途径获得文件时,只需要通过scp命令便可轻松的达到目的: 2.我们需要将本机上的文件上传到远程服务器上,远程服务器没有开启ftp服务器或共享,无

随机推荐