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 |