Controllo di processi e ambiente
Le routine di controllo dei processi consentono di avviare, arrestare e gestire i processi dall'interno di un programma, mentre le routine di controllo dell'ambiente consentono di ottenere e modificare le informazioni relative all'ambiente del sistema operativo.
Funzioni di controllo del processo e dell'ambiente
Ciclo | Utilizzo |
---|---|
abort |
Interrompe il processo senza svuotare i buffer né chiamare funzioni registrate da atexit e _onexit |
assert |
Verifica la presenza di errori logici |
_ASSERT , _ASSERTE macro |
Simile a assert , ma è disponibile solo nelle versioni di debug delle librerie di runtime |
atexit |
Routine di pianificazione per l'esecuzione alla chiusura del programma |
_beginthread , _beginthreadex |
Crea un nuovo thread in un processo del sistema operativo Windows |
_cexit |
Esegue le routine di terminazione di exit , ad esempio lo svuotamento del buffer, e quindi restituisce il controllo al programma chiamante senza terminare il processo |
_c_exit |
Esegue le routine di terminazione di _exit e quindi restituisce il controllo al programma chiamante senza terminare il processo |
_cwait |
Attende fino alla terminazione di un altro processo |
_endthread , _endthreadex |
Termina un thread del sistema operativo Windows |
_execl , _wexecl |
Esegue un nuovo processo con un elenco di argomenti |
_execle , _wexecle |
Esegue un nuovo processo con un elenco di argomenti e l'ambiente specificato |
_execlp , _wexeclp |
Esegue un nuovo processo usando la variabile PATH e un elenco di argomenti |
_execlpe , _wexeclpe |
Esegue un nuovo processo usando la variabile PATH , l'ambiente specificato e un elenco di argomenti |
_execv , _wexecv |
Esegue un nuovo processo con una matrice di argomenti |
_execve , _wexecve |
Esegue un nuovo processo con una matrice di argomenti e l'ambiente specificato |
_execvp , _wexecvp |
Esegue un nuovo processo usando la variabile PATH e una matrice di argomenti |
_execvpe , _wexecvpe |
Esegue un nuovo processo usando la variabile PATH , l'ambiente specificato e una matrice di argomenti |
exit |
Chiama le funzioni registrate da atexit e _onexit , svuota tutti i buffer, chiude tutti i file aperti e termina il processo |
_exit |
Termina il processo immediatamente, senza chiamare atexit o _onexit oppure senza svuotare il buffer |
getenv , _wgetenv , getenv_s _wgetenv_s |
Ottiene il valore della variabile di ambiente |
_getpid |
Ottiene il numero dell'ID del processo |
longjmp |
Ripristina l'ambiente dello stack salvato; usarla per eseguire un goto non locale |
_onexit |
Pianifica le routine per l'esecuzione alla chiusura del programma; usarla per assicurare la compatibilità con Microsoft C/C++ 7.0 e versioni precedenti |
_pclose |
Attende un nuovo processore dei comandi e chiude il flusso sulla pipe collegata |
perror , _wperror |
Stampa un messaggio di errore |
_pipe |
Crea una pipe per la lettura e la scrittura |
_popen , _wpopen |
Crea una pipe ed esegue il comando |
_putenv , _wputenv , _putenv_s _wputenv_s |
Aggiunge o modifica il valore della variabile di ambiente |
raise |
Invia un segnale al processo chiamante |
setjmp |
Salva l'ambiente dello stack; usarla per eseguire un goto non locale |
signal |
Gestisce un segnale di interruzione |
_spawnl , _wspawnl |
Crea ed esegue il nuovo processo con l'elenco di argomenti specificato |
_spawnle , _wspawnle |
Crea ed esegue il nuovo processo con l'elenco di argomenti e l'ambiente specificati |
_spawnlp , _wspawnlp |
Crea ed esegue un nuovo processo usando la variabile PATH e l'elenco di argomenti specificato |
_spawnlpe , _wspawnlpe |
Crea ed esegue un nuovo processo usando la variabile PATH , l'ambiente specificato e un elenco di argomenti |
_spawnv , _wspawnv |
Crea ed esegue il nuovo processo con la matrice di argomenti specificata |
_spawnve , _wspawnve |
Crea ed esegue il nuovo processo con l'ambiente specificato e una matrice di argomenti |
_spawnvp , _wspawnvp |
Crea ed esegue un nuovo processo usando la variabile PATH e la matrice di argomenti specificata |
_spawnvpe , _wspawnvpe |
Crea ed esegue un nuovo processo usando la variabile PATH , l'ambiente specificato e una matrice di argomenti |
system , _wsystem |
Esegue un comando del sistema operativo |
Nel sistema operativo Windows, il processo figlio è equivalente al processo padre. Qualsiasi processo può usare _cwait
per attendere un altro processo di cui è noto l'ID.
La differenza tra le famiglie _exec
e _spawn
consiste nel fatto che una funzione _spawn
può restituire il controllo dal nuovo processo al processo chiamante. In una funzione _spawn
,sia il processo chiamante che il nuovo processo sono presenti in memoria, a meno che non sia specificato _P_OVERLAY
. In una _exec
funzione, il nuovo processo sovrappone il processo chiamante, quindi il controllo non può tornare al processo chiamante a meno che non si verifichi un errore nel tentativo di avviare l'esecuzione del nuovo processo.
Le differenze tra le funzioni nelle _exec
famiglie e _spawn
comportano il metodo di individuazione del file da eseguire come nuovo processo, il modulo in cui gli argomenti vengono passati al nuovo processo e il metodo di impostazione dell'ambiente, come illustrato nella tabella seguente. Usare una funzione che passa un elenco di argomenti quando il numero di argomenti è costante o è noto in fase di esecuzione. Usare una funzione che passa un puntatore a una matrice contenente gli argomenti quando il numero di argomenti viene determinato in fase di esecuzione. Le informazioni riportate nella tabella seguente vengono applicate anche alle controparti con caratteri wide delle funzioni _spawn
e _exec
.
_spawn
e _exec
famiglie di funzioni
Funzioni | Usare PATH la variabile per individuare il file |
Convenzione per il passaggio degli argomenti | Impostazioni ambiente |
---|---|---|---|
_execl , _spawnl |
No | List | Ereditate dal processo chiamante |
_execle , _spawnle |
No | List | Puntatore alla tabella dell'ambiente per il nuovo processo passato come ultimo argomento |
_execlp , _spawnlp |
Sì | List | Ereditate dal processo chiamante |
_execvpe , _spawnvpe |
Sì | Array | Puntatore alla tabella dell'ambiente per il nuovo processo passato come ultimo argomento |
_execlpe , _spawnlpe |
Sì | List | Puntatore alla tabella dell'ambiente per il nuovo processo passato come ultimo argomento |
_execv , _spawnv |
No | Array | Ereditate dal processo chiamante |
_execve , _spawnve |
No | Array | Puntatore alla tabella dell'ambiente per il nuovo processo passato come ultimo argomento |
_execvp , _spawnvp |
Sì | Array | Ereditate dal processo chiamante |