Logo Gladiston Santana

Pascal: Delphi & Free Pascal

Desenvolvimento robusto, compilado e de alta performance.

Comunicação com o Sistema Operacional

Muitas vezes focamos apenas na interface visual (GUI) e esquecemos que nosso programa vive dentro de um ecossistema. Um bom software deve ser capaz de informar ao sistema operacional e a outros processos se sua execução foi bem-sucedida ou se algo deu errado no caminho.

Neste artigo, vamos desmistificar o uso de logs via terminal, entender os fluxos de saída padrão e como os códigos de saída (exit codes) são fundamentais para automação e diagnóstico.

O que é um 'Exit Code'?

'Exit code' (às vezes chamado de 'exit status') é um código numérico deixado pelo programa assim que é encerrado. O padrão POSIX, seja no Windows ou Linux, espera que um exit code igual a zero signifique sucesso. Valores diferentes de zero indicam alertas ou erros fatais.

Exemplos comuns de códigos padrão:

  • 1: Erro genérico
  • 2: Arquivo não encontrado (File not found)
  • 5: Acesso negado

Stdout e Stderr

Stdout é a interface de tela padrão. Stderr é o canal reservado para erros de sistema. Redirecionar o Stderr para arquivos de log permite que administradores monitorem falhas sem precisar interagir com a interface visual.

Implementação no Free Pascal

Para enviar mensagens ao terminal (mesmo em aplicações GUI), usamos WriteLn direcionado ao dispositivo correto:

if not FileExists('configure.ini') then
begin
  // Envia erro para o canal de erros do sistema
  WriteLn(stderr, 'Arquivo "configure.ini" não encontrado.');
  // Encerra o programa com código de erro 2 (File Not Found)
  Halt(2);
end;

Visualizando saídas em aplicações GUI

Por padrão, o Windows esconde o terminal em aplicações GUI. Para habilitar a visualização durante o desenvolvimento, vá em Project | Options | Compiler Options | Config and Target e desmarque a opção Win32 gui application (-WG).

Opção Win32 gui application

Desmarcar -WG permite exibir um terminal acompanhando a aplicação visual.

Terminal exibindo mensagens

Exemplo de mensagens WriteLn sendo capturadas pelo terminal.

Depurando o Exit Code

No Lazarus, você pode configurar a IDE para avisar quando um programa termina com erro. Vá em Tools | Options | Debugger | General e ative Show message on stop with Error (exit Code<>0).

Janela de aviso de exit code

Uso em Scripts

No Windows, você verifica o resultado com %ERRORLEVEL%. No Linux, use $?. Isso permite criar automações robustas:

# Exemplo em script Batch (Windows)
meu_app.exe
if %ERRORLEVEL% neq 0 (
   echo "Ocorreu uma falha crítica!"
)

Conclusão

Fazer uso de stdout/stderr e exit codes eleva o nível de profissionalismo do seu software. Isso garante que sua aplicação possa interoperar com scripts de backup, agendadores de tarefas e serviços de monitoramento de rede.

Ao desenvolver, lembre-se: se o programa falhar, não apenas feche a janela. Informe ao sistema por que ele falhou. Isso poupará horas de suporte e diagnóstico no futuro.