system
Operações e informações em nível de sistema
Importação
_ <- fat.system
Alias
ArgValues: uma lista de argumentos (Text) da linha de comando
Tipos
Nome | Assinatura | Breve descrição |
---|---|---|
CommandResult | (code: ExitCode, out: Text) | Tipo de retorno de capture |
Constantes
- successCode, 0: ExitCode
- failureCode, 1: ExitCode
Métodos
Nome | Assinatura | Breve descrição |
---|---|---|
args | (): ArgValues | Retorna lista de argumentos passados pelo shell |
exit | (code: Number): * | Sair do programa com o código de saída fornecido |
getEnv | (var: Text): Text | Obter o valor da variável env por nome |
shell | (cmd: Text): ExitCode | Executa cmd no shell, retorna o código de saída |
capture | (cmd: Text): CommandResult | Captura a saída da execução de cmd |
fork | (args: List/Text, out: Text = ø) | Inicia um processo em segundo plano, retorna PID |
kill | (pid: Number): Void | Envia SIGTERM para o processo pelo PID |
getLocale | (): Text | Obter configuração de localidade atual |
setLocale | (_: Text): Number | Definir configuração de localidade atual |
getMacId | (): Text | Obter identificador da máquina (endereço MAC) |
blockSig | (enabled: Boolean): Void | Bloqueia SIGINT, SIGHUP e SIGTERM |
Notas de uso
Atenção!
É importante agir com cautela e responsabilidade ao utilizar os métodos getEnv
, shell
, capture
, fork
e kill
. A biblioteca system
oferece a capacidade de executar comandos diretamente do sistema operacional, o que pode introduzir riscos de segurança se não forem utilizadas com cuidado.
Para mitigar vulnerabilidades, evite utilizar a entrada do usuário diretamente na construção de comandos passados para esses métodos. A entrada do usuário deve ser validada para prevenir ataques de injeção de comandos e outras violações de segurança.
Tratamento de sinais
Quando ocorre uma interrupção Ctrl+C, a thread principal do interpretador FatScript captura o sinal e inicia um processo de limpeza. Durante esse processo, se ele detectar quaisquer Workers em execução, ele os terminará à força para evitar que o aplicativo fique travado.
Para aplicações que exigem um controle mais refinado sobre o processo de encerramento, o FatScript oferece uma opção para bloquear o tratamento padrão de sinais configurando system.blockSig(true)
. Quando ativado, o interpretador não capturará o Ctrl+C. Isso exige que você implemente seus próprios mecanismos de término, possivelmente através de curses.readKey
ou outro método.
Outras Limitações (multithreading)
Embora os métodos desta biblioteca suportem uma variedade de tarefas de programação, eles não são otimizados para uso intercalado dentro de Workers assíncronos. Ao iniciar processos de dentro de threads, opte pelos métodos shell/capture
, ou use exclusivamente fork/kill
. Misturar esses dois pares de métodos em aplicações multithread pode resultar em comportamentos imprevisíveis.
em cada chamada,
shell/capture
definiráSIGCHLD
para seu comportamento padrão, enquantofork
ignorará esse sinal para tentar evitar processos zumbis
fork
O parâmetro out
permite redirecionar a saída padrão (stdout
) para um arquivo de saída especificado. Se desejar descartar essa saída, você pode usar "/dev/null" como argumento.
get/set locale
O interpretador fry
tentará inicializar o locale LC_ALL
para C.UTF-8
e, se esse locale não estiver disponível no sistema, tentará usar en_US.UTF-8
, caso contrário, usará o locale padrão.
Veja mais sobre nomes de localidade.
a configuração de localidade aplica-se apenas ao aplicativo e não é mantida após a saída do
fry