personality(2) richtet die Prozess-Ausführungsumgebung ein

ÜBERSICHT

#include <sys/personality.h>

int personality(unsigned long persona);

BESCHREIBUNG

Linux unterstützt für jeden Prozess verschiedene Prozess-Ausführungsumgebungen. (Für den Zusammenhang mit den damit verbundenen, eng verwandten Begriffen Execution Domain und Personality siehe /usr/include/linux/personality.h). Unter Anderem mit den Prozess-Ausführungsumgebungen bestimmt der Kernel, wie er Signalnummern in Signale umsetzen soll. Dieses System ermöglicht Linux teilweise, für andere UNIX-Systeme kompilierte Programme direkt laufen zu lassen.

Falls persona nicht 0xffffffff ist setzt personality() die Ausführungs-Domain des Aufrufenden auf den durch persona angegebenen Wert. Wird persona als 0xffffffff angegeben, kann die aktuelle Persona ermittelt werden, ohne sie zu ändern.

A list of the available execution domains can be found in <sys/personality.h>. The execution domain is a 32-bit value in which the top three bytes are set aside for flags that cause the kernel to modify the behavior of certain system calls so as to emulate historical or architectural quirks. The least significant byte is value defining the personality the kernel should assume. The flag values are as follows:

ADDR_COMPAT_LAYOUT (seit Linux 2.6.9)
With this flag set, provide legacy virtual address space layout.
ADDR_NO_RANDOMIZE (seit Linux 2.6.12)
With this flag set, disable address-space-layout randomization.
ADDR_LIMIT_32BIT (seit Linux 2.2)
Begrenzt den Adressraum auf 32-Bit.
ADDR_LIMIT_3GB (seit Linux 2.4.0)
With this flag set, use 0xc0000000 as the offset at which to search a virtual memory chunk on mmap(2); otherwise use 0xffffe000.
FDPIC_FUNCPTRS (seit Linux 2.6.11)
User-space function pointers to signal handlers point (on certain architectures) to descriptors.
MMAP_PAGE_ZERO (seit Linux 2.4.0)
Map page 0 as read-only (to support binaries that depend on this SVr4 behavior).
READ_IMPLIES_EXEC (seit Linux 2.6.8)
Wird dieser Schalter gesetzt, impliziert PROT_READ PROT_EXEC für mmap(2).
SHORT_INODE (seit Linux 2.4.0)
Kein Effekt (?).
STICKY_TIMEOUTS (seit Linux 1.2.0)
With this flag set, select(2), pselect(2), and ppoll(2) do not modify the returned timeout argument when interrupted by a signal handler.
UNAME26 (seit Linux 3.1)
Have uname(2) report a 2.6.40+ version number rather than a 3.x version number. Added as a stopgap measure to support broken applications that could not handle the kernel version-numbering switch from 2.6.x to 3.x.
WHOLE_SECONDS (seit Linux 1.2.0)
Kein Effekt (?).

The available execution domains are:

PER_BSD (seit Linux 1.2.0)
BSD. (Kein Effekt)
PER_HPUX (seit Linux 2.4)
Unterstützung für 32-Bit HP/UX. Diese Unterstützung war nie vollständig und wurde entfernt, so dass seit Linux 4.0 dieser Wert keinen Effekt hat.
PER_IRIX32 (seit Linux 2.2)
IRIX 5 32-Bit. Funktionierte nie, die Unterstützung wurde in Linux 2.6.27 entfernt. Impliziert STICKY_TIMEOUTS.
PER_IRIX64 (seit Linux 2.2)
IRIX 6 64-Bit. Impliziert STICKY_TIMEOUTS; ansonsten kein Effekt.
PER_IRIXN32 (seit Linux 2.2)
IRIX 6 new 32-bit. Impliziert STICKY_TIMEOUTS; ansonsten kein Effekt.
PER_ISCR4 (seit Linux 1.2.0)
Impliziert STICKY_TIMEOUTS; ansonsten kein Effekt.
PER_LINUX (seit Linux 1.2.0)
Linux.
PER_LINUX32 (seit Linux 2.2)
[Muss dokumentiert werden.]
PER_LINUX32_3GB (seit Linux 2.4)
Impliziert ADDR_LIMIT_3GB.
PER_LINUX_32BIT (seit Linux 2.0)
Impliziert ADDR_LIMIT_32BIT.
PER_LINUX_FDPIC (seit Linux 2.6.11)
Impliziert FDPIC_FUNCPTRS.
PER_OSF4 (seit Linux 2.4)
OSF/1 v4. On alpha, clear top 32 bits of iov_len in the user's buffer for compatibility with old versions of OSF/1 where iov_len was defined as. int.
PER_OSR5 (seit Linux 2.4)
Impliziert STICKY_TIMEOUTS und WHOLE_SECONDS; ansonsten kein Effekt.
PER_RISCOS (seit Linux 2.2)
[Muss dokumentiert werden.]
PER_SCOSVR3 (seit Linux 1.2.0)
Impliziert STICKY_TIMEOUTS, WHOLE_SECONDS und SHORT_INODE; ansonsten kein Effekt.
PER_SOLARIS (seit Linux 2.4)
Impliziert STICKY_TIMEOUTS; ansonsten kein Effekt.
PER_SUNOS (seit Linux 2.4.0)
Implies STICKY_TIMEOUTS. Divert library and dynamic linker searches to /usr/gnemul. Buggy, largely unmaintained, and almost entirely unused; support was removed in Linux 2.6.26.
PER_SVR3 (seit Linux 1.2.0)
Impliziert STICKY_TIMEOUTS und SHORT_INODE; ansonsten kein Effekt.
PER_SVR4 (seit Linux 1.2.0)
Impliziert STICKY_TIMEOUTS und MMAP_PAGE_ZERO; ansonsten kein Effekt.
PER_UW7 (seit Linux 2.4)
Impliziert STICKY_TIMEOUTS und MMAP_PAGE_ZERO; ansonsten kein Effekt.
PER_WYSEV386 (seit Linux 1.2.0)
Impliziert STICKY_TIMEOUTS und SHORT_INODE; ansonsten kein Effekt.
PER_XENIX (seit Linux 1.2.0)
Impliziert STICKY_TIMEOUTS und SHORT_INODE; ansonsten kein Effekt.

RÜCKGABEWERT

Bei Erfolg wird die frühere persona zurückgegeben. Tritt ein Fehler auf, ist der Rückgabewert -1 und errno wird entsprechend gesetzt.

FEHLER

EINVAL
Der Kernel konnte die Prozess-Ausführungsumgebung nicht ändern.

VERSIONEN

This system call first appeared in Linux 1.1.20 (and thus first in a stable kernel release with Linux 1.2.0); library support was added in glibc 2.3.

KONFORM ZU

personality() ist Linux-spezifisch und sollte nicht für portable Programme verwendet werden.

KOLOPHON

Diese Seite ist Teil der Veröffentlichung 4.06 des Projekts Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Hanno Wagner <[email protected]>, Martin Eberhard Schauer <[email protected]> und Mario Blättermann <[email protected]> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <[email protected]>.