---
name: "putgrent"
section: "3"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/putgrent"
---

# putgrent(3)

write a group database entry to a file

## NAME

putgrent - write a group database entry to a file

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#define _GNU_SOURCE         /* See feature_test_macros(7) */
#include <grp.h>
```

**int putgrent(const struct group \*restrict** *grp***, FILE \*restrict** *stream***);**

## DESCRIPTION

The **putgrent**() function is the counterpart for [**fgetgrent**(3)](/fgetgrent/3.md). The function writes the content of the provided *struct group* into the *stream*. The list of group members must be NULL-terminated or NULL-initialized.

The *struct group* is defined as follows:

```
struct group {
    char   *gr_name;      /* group name */
    char   *gr_passwd;    /* group password */
    gid_t   gr_gid;       /* group ID */
    char  **gr_mem;       /* group members */
};
```

## RETURN VALUE

The function returns zero on success, and a nonzero value on error.

## ATTRIBUTES

For an explanation of the terms used in this section, see [**attributes**(7)](/attributes/7.md).

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **putgrent**() | Thread safety | MT-Safe |

## STANDARDS

GNU.

## SEE ALSO

[**fgetgrent**(3)](/fgetgrent/3.md), [**getgrent**(3)](/getgrent/3.md), [**group**(5)](/group/5.md)
