Provided by: manpages-pt-br-dev_4.13-4_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.10 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 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.

Linux                                            1 novembro 2020                                       SYSCTL(2)