attributes(7)

Från Wiki.linux.se
Version från den 25 november 2024 kl. 07.52 av Admin (diskussion | bidrag) (Skapade sidan med '== attributes(7) == === NAMN === '''attributes''' - POSIX-säkerhetskoncept === BESKRIVNING === '''Obs:''' Texten i denna man-sida är baserad på material hämtat från avsnittet "POSIX-säkerhetskoncept" i GNU C Library-manualen. Ytterligare information om ämnena som beskrivs här finns i den manualen. Flera funktionsmanualsidor innehåller ett avsnitt '''ATTRIBUTES''' som beskriver hur säkert det är att anropa funktionen i olika sammanhang. Detta avsnitt markera...')
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

attributes(7)

NAMN

attributes - POSIX-säkerhetskoncept

BESKRIVNING

Obs: Texten i denna man-sida är baserad på material hämtat från avsnittet "POSIX-säkerhetskoncept" i GNU C Library-manualen. Ytterligare information om ämnena som beskrivs här finns i den manualen.

Flera funktionsmanualsidor innehåller ett avsnitt ATTRIBUTES som beskriver hur säkert det är att anropa funktionen i olika sammanhang. Detta avsnitt markerar funktioner med följande säkerhetsklassificeringar:

MT-Safe

MT-Safe (trådsäkra) funktioner är säkra att kalla i närvaro av andra trådar. MT i MT-Safe står för Multi Thread.

  • Att vara MT-Safe innebär inte att en funktion är atomisk eller att den använder några av de mekanismer för minnessynkronisering som POSIX tillhandahåller användare.
  • Att anropa flera MT-Safe-funktioner i följd garanterar inte att kombinationen av dessa är MT-Safe. Samtidiga anrop från andra trådar kan påverka destruktivt.
  • Optimeringar på hela programnivån som inline-funktioner kan exponera osäker omordning. Därför rekommenderas inte inlining över GNU C Library-gränssnittet.

MT-Unsafe

MT-Unsafe-funktioner är inte säkra att anropa i program som är multitrådade.

Villkorligt säkra funktioner

För vissa funktioner som är osäkra i vissa sammanhang finns det sätt att hantera problemen utan att helt undvika funktionen. Följande nyckelord används för att indikera dessa problem, och varje definition anger hur hela programmet behöver begränsas för att göra funktionen säker:

  • init

Funktioner markerade med init utför osäker initialisering vid första anropet. Att kalla funktionen minst en gång i ett enkeltrådat läge eliminerar denna osäkerhet.

  • race

Funktionen orsakar datarace vid parallell exekvering, t.ex. genom att modifiera gemensamma resurser.

  • const

Modifierar interna objekt på ett icke-atomiskt sätt som bör betraktas som konstanta.

  • sig

Funktionen kan tillfälligt installera en signalhanterare för interna ändamål. Detta kan störa andra signalanvändningar.

  • term

Kan ändra terminalinställningar på ett sätt som orsakar förlust av ändringar från andra trådar.

Andra säkerhetsanmärkningar

Vissa nyckelord kan användas för att markera funktioner som inte är direkt osäkra men som kan behöva övervägas i vissa typer av program:

  • locale

Fungerar utan synkronisering med aktuella lokala inställningar.

  • env

Funktioner som åtkommer miljövariabler utan synkronisering.

  • hostid

Funktioner som läser värddatorns systemidentifierare utan atomisk åtkomst.

  • sigintr

Åtkomst till interna signaldata utan att garantera trådsäkerhet.

  • cwd

Ändrar tillfälligt arbetskatalogen, vilket kan påverka relativ sökvägsupplösning i andra trådar.

SE ÄVEN

COLOPHON

Denna sida är en del av projektet man-pages (Linuxkärnan och C-bibliotekets gränssnittsdokumentation). Mer information finns på: kernel.org/doc/man-pages

Linux man-pages 6.9.1 — 2024-05-02 — attributes(7)

Sidor som refererar till denna sida:

**inet(3)**, **inet_ntop(3)**, **inet_pton(3)**, **initgroups(3)**, **insque(3)**, **isalpha(3)**, **isatty(3)**, **isgreater(3)**, **iswalnum(3)**, **iswalpha(3)**, **iswblank(3)**, **iswcntrl(3)**, **iswctype(3)**, **iswdigit(3)**, **iswgraph(3)**, **iswlower(3)**, **iswprint(3)**, **iswpunct(3)**, **iswspace(3)**, **iswupper(3)**, **iswxdigit(3)**, **j0(3)**, **key_setsecret(3)**, **ldexp(3)**, **lio_listio(3)**, **localeconv(3)**, **lockf(3)**, **log10(3)**, **log1p(3)**, **log2(3)**, **log(3)**, **logb(3)**, **login(3)**, **lrint(3)**, **lround(3)**, **lsearch(3)**, **lseek64(3)**, **makecontext(3)**, **makedev(3)**, **mallinfo(3)**, **malloc(3)**, **malloc_get_state(3)**, **malloc_info(3)**, **malloc_stats(3)**, **malloc_trim(3)**, **malloc_usable_size(3)**, **matherr(3)**, **mblen(3)**, **mbrlen(3)**, **mbrtowc(3)**, **mbsinit(3)**, **mbsnrtowcs(3)**, **mbsrtowcs(3)**, **mbstowcs(3)**, **mbtowc(3)**, **mcheck(3)**, **memccpy(3)**, **memchr(3)**, **memcmp(3)**, **memcpy(3)**, **memfrob(3)**, **memmem(3)**, **memmove(3)**, **mempcpy(3)**, **memset(3)**, **mkdtemp(3)**, **mkfifo(3)**, **mkstemp(3)**, **mktemp(3)**, **modf(3)**, **mq_close(3)**, **mq_getattr(3)**, **mq_notify(3)**, **mq_open(3)**, **mq_receive(3)**, **mq_send(3)**, **mq_unlink(3)**, **mtrace(3)**, **nan(3)**, **nextafter(3)**, **nextup(3)**, **nl_langinfo(3)**, **ntp_gettime(3)**, **on_exit(3)**, **opendir(3)**, **open_memstream(3)**, **openpty(3)**, **perror(3)**, **popen(3)**, **posix_fallocate(3)**, **posix_memalign(3)**, **posix_openpt(3)**, **pow10(3)**, **pow(3)**, **__ppc_set_ppr_med(3)**, **__ppc_yield(3)**, **printf(3)**, **profil(3)**, **psignal(3)**, **pthread_attr_init(3)**, **pthread_attr_setaffinity_np(3)**, **pthread_attr_setdetachstate(3)**, **pthread_attr_setguardsize(3)**, **pthread_attr_setinheritsched(3)**, **pthread_attr_setschedparam(3)**, **pthread_attr_setschedpolicy(3)**, **pthread_attr_setscope(3)**, **pthread_attr_setsigmask_np(3)**, **pthread_attr_setstack(3)**, **pthread_attr_setstackaddr(3)**, **pthread_attr_setstacksize(3)**, **pthread_cancel(3)**, **pthread_cleanup_push(3)**, **pthread_create(3)**, **pthread_detach(3)**, **pthread_equal(3)**, **pthread_exit(3)**, **pthread_getattr_default_np(3)**, **pthread_getattr_np(3)**, **pthread_getcpuclockid(3)**, **pthread_join(3)**, **pthread_kill(3)**, **pthread_kill_other_threads_np(3)**, **pthread_self(3)**, **pthread_setaffinity_np(3)**, **pthread_setcancelstate(3)**, **pthread_setconcurrency(3)**, **pthread_setname_np(3)**, **pthread_setschedparam(3)**, **pthread_setschedprio(3)**, **pthread_sigmask(3)**, **pthread_sigqueue(3)**, **pthread_testcancel(3)**, **pthread_tryjoin_np(3)**, **pthread_yield(3)**, **ptsname(3)**, **putenv(3)**, **putgrent(3)**, **putpwent(3)**, **puts(3)**, **putwchar(3)**, **qecvt(3)**, **qsort(3)**, **raise(3)**, **rand(3)**, **random(3)**, **random_r(3)**, **rcmd(3)**, **readdir(3)**, **readdir_r(3)**, **realpath(3)**, **re_comp(3)**, **regex(3)**, **remainder(3)**, **remove(3)**, **remquo(3)**, **resolver(3)**, **rewinddir(3)**, **rexec(3)**, **rint(3)**, **round(3)**, **rpc(3)**, **rpmatch(3)**, **rtime(3)**, **scalb(3)**, **scalbln(3)**, **scandir(3)**, **scanf(3)**, **sched_getcpu(3)**, **seekdir(3)**, **sem_close(3)**, **sem_destroy(3)**, **sem_getvalue(3)**, **sem_init(3)**, **sem_open(3)**, **sem_post(3)**, **sem_unlink(3)**, **sem_wait(3)**, **setaliasent(3)**, **setbuf(3)**, **setenv(3)**, **setjmp(3)**, **setlocale(3)**, **setlogmask(3)**, **setnetgrent(3)**, **shm_open(3)**, **siginterrupt(3)**, **signbit(3)**, **significand(3)**, **sigpause(3)**, **sigqueue(3)**, **sigset(3)**, **sigsetops(3)**, **sigvec(3)**, **sigwait(3)**, **sin(3)**, **sincos(3)**, **sinh(3)**, **sleep(3)**, **sockatmark(3)**, **sqrt(3)**, **sscanf(3)**, **statvfs(3)**, **stdarg(3)**, **stdio_ext(3)**, **stpncpy(3)**, **strcasecmp(3)**, **strchr(3)**, **strcmp(3)**, **strcoll(3)**, **strcpy(3)**, **strdup(3)**, **strerror(3)**, **

strfmon(3)**, **strfromd(3)**, **strfry(3)**, **strftime(3)**, **strlen(3)**, **strncat(3)**, **strnlen(3)**, **strpbrk(3)**, **strptime(3)**, **strsep(3)**, **strsignal(3)**, **strspn(3)**, **strstr(3)**, **strtod(3)**, **strtoimax(3)**, **strtok(3)**, **strtol(3)**, **strtoul(3)**, **strverscmp(3)**, **strxfrm(3)**, **swab(3)**, **sysconf(3)**, **syslog(3)**, **system(3)**, **sysv_signal(3)**, **tan(3)**, **tanh(3)**, **tcgetpgrp(3)**, **tcgetsid(3)**, **telldir(3)**, **tempnam(3)**, **termios(3)**, **tgamma(3)**, **timegm(3)**, **tmpfile(3)**, **tmpnam(3)**, **toascii(3)**, **toupper(3)**, **towctrans(3)**, **towlower(3)**, **towupper(3)**, **trunc(3)**, **tsearch(3)**, **ttyname(3)**, **ttyslot(3)**, **tzset(3)**, **ualarm(3)**, **ulimit(3)**, **ungetwc(3)**, **unlocked_stdio(3)**, **unlockpt(3)**, **updwtmp(3)**, **usleep(3)**, **wcpcpy(3)**, **wcpncpy(3)**, **wcrtomb(3)**, **wcscasecmp(3)**, **wcscat(3)**, **wcschr(3)**, **wcscmp(3)**, **wcscpy(3)**, **wcscspn(3)**, **wcsdup(3)**, **wcslen(3)**, **wcsncasecmp(3)**, **wcsncat(3)**, **wcsncmp(3)**, **wcsncpy(3)**, **wcsnlen(3)**, **wcsnrtombs(3)**, **wcspbrk(3)**, **wcsrchr(3)**, **wcsrtombs(3)**, **wcsspn(3)**, **wcsstr(3)**, **wcstoimax(3)**, **wcstok(3)**, **wcstombs(3)**, **wcswidth(3)**, **wctob(3)**, **wctomb(3)**, **wctrans(3)**, **wctype(3)**, **wcwidth(3)**, **wmemchr(3)**, **wmemcmp(3)**, **wmemcpy(3)**, **wmemmove(3)**, **wmemset(3)**, **wordexp(3)**, **wprintf(3)**, **xcrypt(3)**, **xdr(3)**, **y0(3)**, **man-pages(7)**, **pthreads(7)**, **standards(7)**