"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que definir `ulimit -n` de um programa Go em distribuições Linux de 32 bits resulta em um erro de "argumento inválido"?

Por que definir `ulimit -n` de um programa Go em distribuições Linux de 32 bits resulta em um erro de "argumento inválido"?

Publicado em 2024-11-06
Navegar:386

Why does setting `ulimit -n` from a Go program on Linux 32-bit distributions result in an \

Como definir ulimit -n de um programa Go?

Problema

Um usuário tentou definir ulimit -n de dentro de um programa Go para restrinja-o dentro do programa e não globalmente, usando as chamadas de sistema setrlimit e getrlimit. No entanto, ocorreu um erro ao tentar definir o valor, informando "argumento inválido".

Solução

Foi descoberto que o problema era devido a bugs Go no Getrlimit e Setrlimit para Linux 32- distribuições de bits. Esses bugs já foram corrigidos e as seguintes etapas podem ser seguidas para resolver o problema:

  1. Atualize para a dica de ramificação padrão do Go. Isso incluirá as correções de bugs.
  2. Reconstrua o programa usando a versão atualizada do Go.

Resultados

Depois de atualizar para a dica de ramificação padrão do Go e reconstruir o programa, o comportamento esperado é observado:

$ ./rlimit
{1024 4096}
Error Setting Rlimit  operation not permitted
Rlimit Final {1024 4096}
$ sudo ./rlimit
[sudo] password for peterSO: 
{1024 4096}
Rlimit Final {999999 999999}

Nota: Para distribuições Linux/amd64, o problema não foi encontrado. O problema era específico das distribuições Linux de 32 bits.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3