Programación del proceso de espera
Segunda pregunta
En primer lugar, los procesos y los hilos son diferentes.
En el caso de múltiples procesos, si el proceso padre finaliza primero, el proceso hijo será recibido por el proceso de inicio y se convertirá en un proceso hijo del proceso de inicio, y luego el proceso hijo continuará ejecutándose. hasta que termine. El proceso de inicio es responsable de obtener el estado final de estos procesos secundarios y liberar los recursos del proceso. Si el proceso hijo finaliza primero, entonces el proceso padre debe usar wait o waitpid para obtener el estado final del proceso hijo y liberar los recursos del proceso. De lo contrario, el proceso hijo se convertirá en un proceso inactivo y los recursos del proceso que ocupa no se liberarán. .
En subprocesos múltiples, si el subproceso principal o principal que mencionaste usa retorno o salida al final, o finaliza el procesamiento, entonces todo el proceso finaliza y otros subprocesos secundarios finalizan naturalmente. Si main termina con pthread_exit, solo el hilo principal finaliza y el hilo secundario sigue ejecutándose. De manera similar, si se llama a la salida cuando finaliza el subproceso secundario, todo el proceso incluye el final del subproceso principal. Si se llama a pthread_exit o finaliza normalmente, entonces solo finaliza el subproceso secundario.
Además, si no hay un atributo de separación al final del subproceso secundario, otros subprocesos deben usar pthread_join para obtener el estado final del subproceso y liberar recursos del subproceso, al igual que esperar y esperar en el proceso. .