/ / ¿Cómo matar programas en el mismo directorio en linux? - linux, ubuntu, kill

¿Cómo matar programas en el mismo directorio en linux? - linux, ubuntu, kill

Quiero matar todos los programas que se ejecutan en el mismodirectorio como lo hago. Necesito encontrar qué programas se están ejecutando en este momento y eliminarlos (y tener cuidado de no suicidarme). Estoy ejecutando mi programa en Ubuntu (Linux).

Necesito usar este comando:

int kill(pid_t pid, int sig);

¿Cómo puedo hacerlo?

* Los programas viven en el mismo directorio.

Respuestas

2 para la respuesta № 1

Stricto sensu, tu pregunta no tiene sentido. En el momento en que está recibiendo el directorio de un proceso, podría haber llamado chdir (2) antes de matarlo (y entonces no deberías haberlo matado).

En Linux, para obtener información sobre los procesos, use proc (5). Asi que usa readdir (3) después opendir (3) en /proc/ (Filtrar solo los directorios numéricos, como /proc/1234/ que corresponde al proceso de pid 1234). Para cada proceso allí, use enlace de lectura (2) en /proc/1234/cwd para obtener su directorio (y en /proc/1234/exe para obtener su ejecutable, si importa). Utilizar getcwd (2) y getpid (2) para obtener el directorio actual y el proceso actual.

Por cierto, tu matar (2) es un syscall (listado en syscalls (2)), no una orden. El comando es matar (1) por lo general se ejecuta desde una concha.

Deberias leer Programación avanzada de Linux.

Por fin, tu comportamiento deseado para matar a todosEl proceso que se ejecuta en su directorio es extremadamente hostil para el usuario. Así que, al menos, documéntalo, y tal vez dales alguna forma de deshabilitar ese comportamiento. Una forma más suave sería hacer algunas directorio temporal (utilizando mkdtemp (3)) entonces chdir (2) en ella (entonces tal vez desvincular (2) o rmdir (2) eso).

Ver también pkill (1) y pgrep