Controllo processo 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 dei processi e dell'ambiente

Routine Uso
abort Interrompe il processo senza svuotare i buffer né chiamare funzioni registrate da atexit e _onexit
assert Verifica la presenza di errori logici
Macro _ASSERT, _ASSERTE 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 funzione _exec, il nuovo processo si sovrappone al processo chiamante, in modo che il controllo non torni a quest'ultimo a meno che non si verifichi un errore durante il tentativo di avviare l'esecuzione del nuovo processo.

Le differenze tra le funzioni della famiglia _exec, come tra quelle della famiglia _spawn, includono il metodo di individuazione del file da eseguire come nuovo processo, il modo 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.

Famiglie di funzioni _spawn e _exec

Funzioni Uso della variabile PATH per individuare il file Convenzione per il passaggio degli argomenti Impostazioni dell'ambiente
_execl, _spawnl No Elenco Ereditate dal processo chiamante
_execle, _spawnle No Elenco Puntatore alla tabella dell'ambiente per il nuovo processo passato come ultimo argomento
_execlp, _spawnlp Elenco Ereditate dal processo chiamante
_execlpe, _spawnlpe Elenco Puntatore alla tabella dell'ambiente per il nuovo processo passato come ultimo argomento
_execv, _spawnv No Matrice Ereditate dal processo chiamante
_execve, _spawnve No Matrice Puntatore alla tabella dell'ambiente per il nuovo processo passato come ultimo argomento
_execvp, _spawnvp Matrice Ereditate dal processo chiamante
_execvpe, _spawnvpe Matrice Puntatore alla tabella dell'ambiente per il nuovo processo passato come ultimo argomento

Vedere anche

Routine di runtime per categoria