Provided by: manpages-pt-br-dev_4.15.0-9_all bug

NOME

       sysctl - lê/escreve parâmetros do sistema

SINOPSE

       #include <unistd.h>
       #include <linux/sysctl.h>

       int _sysctl(struct __sysctl_args *args);

DESCRIÇÃO

       This system call no longer exists on current kernels! See NOTES.

       A chamada _sysctl() lê e/ou escrever parâmetros do kernel. Por exemplo, o nome da máquina,
       ou o número máximo de arquivos abertos. O argumento tem a forma

           struct __sysctl_args {
               int    *name;    /* integer vector describing variable */
               int     nlen;    /* length of this vector */
               void   *oldval;  /* 0 or address where to store old value */
               size_t *oldlenp; /* available room for old value,
                                   overwritten by actual size of old value */
               void   *newval;  /* 0 or address of new value */
               size_t  newlen;  /* size of new value */
           };

       Esta chamada faz um busca numa árvore de estrutura, possivelmente parecida com uma  árvore
       de  diretório  sob /proc/sys, e se o item requisitado é encontrado é chamada alguma rotina
       apropriada para ler ou modificar o valor.

VALOR DE RETORNO

       Em caso de sucesso  _sysctl()  devolve  0.  Caso  contráio,  -1  é  devolvido  e  errno  é
       selecionado adequadamente.

ERROS

       EACCES, EPERM
              No  search  permission  for  one  of  the  encountered  "directories",  or  no read
              permission where oldval was nonzero,  or  no  write  permission  where  newval  was
              nonzero.

       EFAULT O  pedido  perguntou  pelo  valor  anterior  selecionando oldval como não nulo, mas
              permitido zero espaço em oldlenp.

       ENOTDIR
              name não foi encontrado.

VERSÕES

       This system call first appeared in Linux 1.3.57.  It  was  removed  in  Linux  5.5;  glibc
       support was removed in version 2.32.

DE ACORDO COM

       Esta  chamada  é  específica  do Linux e não deve ser usada em programas que pretendem ser
       portáveis. . Ela é originária do BSD 4.4. Somente o Linux tem o espelho  /proc/sys,  e  os
       esquemas  de  nomeamento  de objetos diferem entro o Linux e o 4.4BSD, mas a declaração da
       função sysctl() é a mesma em ambos.

NOTAS

       Use of this system call was long discouraged: since Linux 2.6.24, uses of this system call
       result  in  warnings  in  the  kernel  log,  and in Linux 5.5, the system call was finally
       removed.  Use the /proc/sys interface instead.

       Note that on older kernels where this system call still exists, it is  available  only  if
       the  kernel was configured with the CONFIG_SYSCTL_SYSCALL option.  Furthermore, glibc does
       not provide a wrapper for this system call, necessitating the use of syscall(2).

BUGS

       The object names vary between kernel versions,  making  this  system  call  worthless  for
       applications.

       Nem todos objetos disponíveis são documentados adequadamente.

       Ainda não é possível mudar sistema operacional escrevendo /proc/sys/kernel/ostype.

EXEMPLOS

       #define _GNU_SOURCE
       #include <unistd.h>
       #include <sys/syscall.h>
       #include <string.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <linux/sysctl.h>

       int _sysctl(struct __sysctl_args *args );

       #define OSNAMESZ 100

       int
       main(void)
       {
           struct __sysctl_args args;
           char osname[OSNAMESZ];
           size_t osnamelth;
           int name[] = { CTL_KERN, KERN_OSTYPE };

           memset(&args, 0, sizeof(args));
           args.name = name;
           args.nlen = sizeof(name)/sizeof(name[0]);
           args.oldval = osname;
           args.oldlenp = &osnamelth;

           osnamelth = sizeof(osname);

           if (syscall(SYS__sysctl, &args) == -1) {
               perror("_sysctl");
               exit(EXIT_FAILURE);
           }
           printf("This machine is running %*s\n", osnamelth, osname);
           exit(EXIT_SUCCESS);
       }

VEJA TAMBÉM

       proc(5)

COLOFÃO

       Esta página faz parte da versão 5.13 do projeto Linux man-pages. Uma descrição do projeto,
       informações sobre relatórios de bugs e a  versão  mais  recente  desta  página  podem  ser
       encontradas em https://www.kernel.org/doc/man-pages/.

TRADUÇÃO

       A  tradução  para  português brasileiro desta página man foi criada por André Luiz Fassone
       <lonely_wolf@ig.com.br> e Marcelo Pereira da Silva <marcelo@pereira.com>

       Esta tradução é uma documentação  livre;  leia  a  Licença  Pública  Geral  GNU  Versão  3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  ou  posterior  para  as condições de direitos
       autorais.  Nenhuma responsabilidade é aceita.

       Se você encontrar algum erro na tradução desta página de manual, envie um  e-mail  para  a
       lista de discussão de tradutores ⟨debian-l10n-portuguese@lists.debian.org⟩.