---
name: "setloginclass"
section: "2"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/getloginclass"
---

# setloginclass(2)

get/set login class

Part of [getloginclass(2)](/getloginclass/2.md).

## NAME

**getloginclass**, **setloginclass** – get/set login class

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<unistd.h\>**

*int*\

**getloginclass**(*char \*name*, *size\_t len*);

*int*\

**setloginclass**(*const char \*name*);

## DESCRIPTION

The **getloginclass**() routine returns the login class name associated with the calling process, as previously set by **setloginclass**(). The caller must provide the buffer *name* with length *len* bytes to hold the result. The buffer should be at least MAXLOGNAME bytes in length.

The **setloginclass**() system call sets the login class of the calling process to *name*. This system call is restricted to the super-user, and is normally used only when a new session is being created on behalf of the named user (for example, at login time, or when a remote shell is invoked). Processes inherit login class from their parents.

## RETURN VALUES

The **getloginclass()** function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

## ERRORS

The following errors may be returned by these calls:

- \[EFAULT\]

  The *name* argument gave an invalid address.

- \[EINVAL\]

  The *name* argument pointed to a string that was too long. Login class names are limited to MAXLOGNAME (from ⟨sys/param.h⟩) characters, currently 33 including null.

- \[EPERM\]

  The caller tried to set the login class and was not the super-user.

- \[ENAMETOOLONG\]

  The size of the buffer is smaller than the result to be returned.

## SEE ALSO

[ps(1)](/ps/1.md), [setusercontext(3)](/setusercontext/3.md), [login.conf(5)](/login.conf/5.md), [rctl(8)](/rctl/8.md)

## HISTORY

The **getloginclass**() and **setloginclass**() system calls first appeared in FreeBSD 9.0.
