C/Visual C - Ver procesos activos en C

 
Vista:

Ver procesos activos en C

Publicado por Thor (3 intervenciones) el 01/08/2002 03:30:53
Estoy trabajando bajo Linux con C (gcc) y me gustaría saber si alguien conoce la manera de obtener el estado de un proceso con pid conocido, por ejemplo: corriendo, detenido, inexistente, etc...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Obtener el estado de un proceso en Linux

Publicado por Alejandro (913 intervenciones) el 12/03/2025 19:42:04
Para obtener el estado de un proceso en Linux utilizando C, puedes leer el archivo `/proc/[pid]/status`, donde `[pid]` es el ID del proceso que deseas consultar. Este archivo contiene información sobre el proceso, incluyendo su estado.

Aquí tienes un ejemplo de cómo hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <stdlib.h>
 
void obtener_estado_proceso(pid_t pid) {
    char ruta[256];
    snprintf(ruta, sizeof(ruta), "/proc/%d/status", pid);
 
    FILE *archivo = fopen(ruta, "r");
    if (archivo == NULL) {
        perror("Error al abrir el archivo");
        return;
    }
 
    char linea[256];
    while (fgets(linea, sizeof(linea), archivo)) {
        if (strncmp(linea, "State:", 6) == 0) {
            printf("Estado del proceso %d: %s", pid, linea + 6);
            break;
        }
    }
 
    fclose(archivo);
}
 
int main() {
    pid_t pid = 1234; // Reemplaza con el PID que deseas consultar
    obtener_estado_proceso(pid);
    return 0;
}

Explicación:


1. Ruta del archivo: Se construye la ruta al archivo de estado del proceso.
2. Apertura del archivo: Se intenta abrir el archivo `/proc/[pid]/status`.
3. Lectura del estado: Se lee línea por línea hasta encontrar la línea que comienza con "State:", que contiene el estado del proceso.
4. Salida: Se imprime el estado del proceso.

Estados posibles:


- R (Running): El proceso está en ejecución.
- S (Sleeping): El proceso está en espera.
- D (Uninterruptible Sleep): El proceso está en espera ininterrumpible.
- T (Stopped): El proceso está detenido.
- Z (Zombie): El proceso ha terminado, pero aún tiene una entrada en la tabla de procesos.

Recuerda que si el proceso no existe, el intento de abrir el archivo fallará, y deberías manejar ese caso adecuadamente. ¡Espero que esto te ayude, Thor!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar