¿Puede alguien decirme cómo verificar si un proceso de Unix con una identificación de proceso dada se está ejecutando dentro de un programa C.? Sé que puedo llamar a system() y usar el comando ps pero no quiero llamar al sistema().Verificar procesos en ejecución en C
Respuesta
Usando kill(2):
if (kill(pid, 0) == 0) {
/* process is running or a zombie */
} else if (errno == ESRCH) {
/* no such process with the given pid is running */
} else {
/* some other error... use perror("...") or strerror(errno) to report */
}
Simple. Elegante. Exhaustivo. +1. – DevSolar
Gracias Juliano. Agradezco su rápida y excelente respuesta. –
Y también inútil a menos que el proceso sea un proceso secundario del proceso de llamada. Los PID se pueden reutilizar * tan pronto como * un proceso final sea 'esperado' por su padre, por lo que si existe un proceso por un PID dado, no hay garantía de que sea el proceso que usted cree que es a menos que sea el padre (y entonces usted ya sabe si su pid fue devuelto por una función 'wait'-family). –
- 1. Enumerar procesos en ejecución en Delphi
- 2. Obtener la lista de procesos en ejecución (Visual C++)
- 3. Recuperar nombres de procesos en ejecución
- 4. Linux API para mostrar los procesos en ejecución?
- 5. obtener toda la información de procesos en ejecución usando QProcess
- 6. ¿Cómo muestro los procesos en ejecución en Oracle DB?
- 7. Lista de procesos en ejecución en Windows de 64 bits
- 8. Comunicación entre procesos en c/C++
- 9. La ejecución de dos procesos en paralelo desde makefile
- 10. Python: Ejecución de procesos Daemon en Windows 7
- 11. ejecución secuencial de procesos en segundo plano Unix
- 12. C# y C++ Sincronizar entre procesos
- 13. ¿Cómo verificar todos los servicios en ejecución en Android?
- 14. Ejecución diferida en C#
- 15. Cómo detener procesos largos de ejecución con gracia?
- 16. ¿Cómo verificar el tipo de la variable en C en tiempo de ejecución?
- 17. ¿La ejecución de procesos python separados evita el GIL?
- 18. ¿Cómo verificar un proceso en ejecución con Ruby?
- 19. C# Detección de procesos engendrados
- 20. C# - WCF - comunicación entre procesos
- 21. ThreadPools vs Own Threads para procesos de larga ejecución
- 22. .NET Prueba automatizada para procesos de larga ejecución
- 23. burlarse en tiempo de ejecución en C?
- 24. Android, AsyncTask, procesos de larga ejecución y cambios de orientación
- 25. Ejecución concurrente del kernel GPU desde procesos múltiples
- 26. Python: ¿pasar o suspender para procesos de larga ejecución?
- 27. archivos en procesos múltiples
- 28. ¿Cómo puedo ver los parámetros de los procesos en ejecución actualmente en SQL Server 2008
- 29. Multiprocesamiento en Python al tiempo que limita el número de procesos en ejecución
- 30. Obtener otros tamaños de ventana de procesos en ejecución en Python
duplicado posible: http://stackoverflow.com/questions/3667486/display-all-process-using-a-posix-function –
No es un duplicado. Esta pregunta se trata de buscar un ID de proceso * específico *, esa otra pregunta es sobre enumerar * todos * los procesos. (La excelente respuesta de Juliano no se aplicaría a esa otra pregunta.) – DevSolar
@EdwinBuck considere la posibilidad de rescindir su respuesta correcta, si no totalmente portátil (en sistemas donde/proc esté disponible, proporcionaría acceso a información que podría ayudar a la desambiguación, y otros 'ps' tienen que obtener su información de alguna parte) –