Controle de processo e de ambiente

Use as rotinas de controle de processo para iniciar, parar e gerenciar processos de dentro de um programa. Use as rotinas de controle de ambiente para obter e alterar informações sobre o ambiente do sistema operacional.

Funções de controle de processo e ambiente

Rotina Usar
abort Cancelar o processo sem liberar os buffers ou chamar funções registradas por atexit e _onexit
assert Testar se há erro de lógica
Macros _ASSERT, _ASSERTE Similar a assert mas disponível apenas em versões de depuração das bibliotecas de tempo de execução
atexit Agendar rotinas para execução no encerramento do programa
_beginthread, _beginthreadex Criar um novo thread em um processo do sistema operacional Windows
_cexit Executar procedimentos de encerramento exit (como liberar buffers) e depois devolver o controle ao programa de chamada sem encerrar processo
_c_exit Executar procedimentos de encerramento _exit e depois devolver o controle ao programa de chamada sem encerrar processo
_cwait Aguarde até outro processo terminar
_endthread, _endthreadex Encerrar um thread do sistema operacional Windows
_execl, _wexecl Executar o novo processo com a lista de argumentos
_execle, _wexecle Executar o novo processo com a lista de argumentos e o ambiente fornecido
_execlp, _wexeclp Executar o novo processo usando a variável PATH e a lista de argumentos
_execlpe, _wexeclpe Executar o novo processo usando a variável PATH e a lista de argumentos e ambiente fornecidos
_execv, _wexecv Executar o novo processo com uma matriz de argumentos
_execve, _wexecve Executar o novo processo com a matriz de argumentos e o ambiente fornecido
_execvp, _wexecvp Executar o novo processo usando a variável PATH e a matriz de argumentos
_execvpe, _wexecvpe Executar o novo processo usando a variável PATH, a lista de argumentos e o ambiente fornecidos
exit Chamar funções registradas por atexit e _onexit, liberar todos os buffers, fechar todos os arquivos abertos e encerrar processo
_exit Encerrar processo imediatamente sem chamar atexit ou _onexit ou liberar buffers
getenv, _wgetenv, getenv_s, _wgetenv_s Obter o valor da variável do ambiente
_getpid Obter o número de identificação do processo
longjmp Restaurar o ambiente de pilha salvo; usá-lo para executar um goto não local
_onexit Agendar rotinas para execução no encerramento do programa; usar para compatibilidade com a versão 7.0 do Microsoft C/C++ e versões anteriores
_pclose Aguardar um novo processador de comando e fechar o fluxo no pipe associado
perror, _wperror Imprimir mensagem de erro
_pipe Criar um pipe para leitura e gravação
_popen, _wpopen Criar pipe e executar o comando
_putenv, _wputenv, _putenv_s, _wputenv_s Adicionar ou alterar o valor da variável de ambiente
raise Enviar um sinal para o processo de chamada
setjmp Salvar o ambiente da pilha. usar para executar goto não local
signal Lidar com o sinal de interrupção
_spawnl, _wspawnl Criar e executar o novo processo com a lista de argumentos especificados
_spawnle, _wspawnle Criar e executar o novo processo com a lista de argumentos e o ambiente especificados
_spawnlp, _wspawnlp Criar e executar o novo processo usando a variável PATH e a lista de argumentos especificada
_spawnlpe, _wspawnlpe Criar e executar o novo processo usando a variável PATH, o ambiente especificado e a lista de argumentos
_spawnv, _wspawnv Criar e executar o novo processo com a matriz de argumentos especificada
_spawnve, _wspawnve Criar e executar o novo processo com a matriz de argumentos e o ambiente especificados
_spawnvp, _wspawnvp Criar e executar o novo processo usando a variável PATH e a matriz de argumentos especificada
_spawnvpe, _wspawnvpe Criar e executar o novo processo usando a variável PATH, o ambiente especificado e a matriz de argumentos
system, _wsystem Executar o comando do sistema operacional

No sistema operacional Windows, o processo gerado é equivalente ao processo de geração. Qualquer processo pode usar _cwait para aguardar outro processo para o qual a ID do processo é conhecida.

A diferença entre as famílias _exec e _spawn é que uma função _spawn pode retornar o controle do novo processo para o processo de chamada. Em uma função _spawn, o processo de chamada e o novo processo estão presentes na memória, a menos que _P_OVERLAY seja especificado. Em uma _exec função, o novo processo se sobrepõe ao processo de chamada, portanto, o controle não pode retornar ao processo de chamada, a menos que ocorra um erro na tentativa de iniciar a execução do novo processo.

As diferenças entre as funções nas _exec famílias e _spawn envolvem o método de localização do arquivo a ser executado como o novo processo, a forma na qual os argumentos são passados para o novo processo e o método de configuração do ambiente, conforme mostrado na tabela a seguir. Use uma função que passa uma lista de argumentos quando o número de argumentos for constante ou conhecido no momento da compilação. Use uma função que passa um ponteiro para uma matriz contendo os argumentos quando o número de argumentos for determinado no tempo de execução. As informações na tabela a seguir também se aplicam aos equivalentes de caractere largo das funções _spawn e _exec.

Famílias de funções _spawn e _exec

Funções Use a variável PATH para localizar o arquivo Convenção de passagem de argumentos Configurações do ambiente
_execl, _spawnl Não Lista Herdado do processo de chamada
_execle, _spawnle Não Lista Ponteiro para a tabela de ambientes para o novo processo passado como o último argumento
_execlp, _spawnlp Sim Lista Herdado do processo de chamada
_execvpe, _spawnvpe Sim Array Ponteiro para a tabela de ambientes para o novo processo passado como o último argumento
_execlpe, _spawnlpe Sim Lista Ponteiro para a tabela de ambientes para o novo processo passado como o último argumento
_execv, _spawnv Não Array Herdado do processo de chamada
_execve, _spawnve Não Array Ponteiro para a tabela de ambientes para o novo processo passado como o último argumento
_execvp, _spawnvp Sim Array Herdado do processo de chamada

Confira também

Rotinas de runtime C universais por categoria