Mi aplicación recibe mensajes mach IPC y devuelve respuestas para los llamantes. Tengo la llamada de Mach port(msgh_remote_port)
y quiero saber PID
de la persona que llama. ¿Puedo encontrar en OSX el puerto mach a PID
que escuche el mach mach específico?Qué PID escucha en un puerto mach determinado
Respuesta
El mach puerto no está directamente asociado con un proceso, sino con una tarea. La tarea se asocia luego con la estructura de proceso bsd. Para consultar los puertos de una tarea, puede usar la función mach_port_names. Para obtener todos los puertos abiertos, itere sobre todas las tareas y use la función mencionada anteriormente.
Un enfoque diferente es usar el sistema de archivos procfs. El sistema de archivos procfs se implementa en la parte superior del sistema de archivos de fusibles y debe instalarse manualmente en un sistema. Es una solución de código abierto. Una vez que el sistema de archivos procfs está instalado, puede consultar los puertos de una tarea accediendo al archivo/proc/proc-id/task/ports. Eche un vistazo al http://osxbook.com/book/bonus/chapter11/procfs/.
Gracias, he encontrado aquí la manera de hacerlo - https://web.archive.org/web/20120907161143/http://robert.sesek.com/thoughts/2012/1/debugging_mach_ports.html
tres maneras que usted puede hacer esto sin un kext:
- sistema de impresión launchctl (u otro dominio)
- lsmp -a (sin nombres de puertos, solo ids)
procexp todos los puertos | grep the_service_name_you_want
(procexp es un complemento en la herramienta de http://NewOSXBook.com/tools/procexp.html)
- 1. ¿Qué puerto está usando un programa determinado?
- 2. ¿Por qué el cliente DHCP escucha en el puerto 68?
- 3. Rastreo de rastreo para un determinado puerto
- 4. Mensajes del puerto de Mach en Objective-C
- 5. Esperar a que un determinado proceso (conociendo el "PID") final
- 6. ¿Cómo puedo obtener el puerto que escucha un servicio WCF?
- 7. ¿Cómo cerrar rmiregistry ejecutándose en un puerto determinado?
- 8. recibir paquetes transmitidos cuando se escucha a un puerto específico
- 9. cómo cambiar el puerto de escucha Postgresql en Windows?
- 10. Ruta de la aplicación y puerto de escucha
- 11. Convierta un PID de Cygwin en un PID de Windows
- 12. ¿Cómo verificar si se está ejecutando un proceso con un PID determinado?
- 13. ¿Cómo puedo verificar desde Ruby si se está ejecutando un proceso con un determinado pid?
- 14. operación de la Cruz-hilo no válida mientras se escucha a un puerto COM
- 15. ¿Cómo obtener puertos en los que se escucha un proceso?
- 16. Cerrar un socket TCP de escucha en C
- 17. Linux Mach-O Desensamblador
- 18. ¿Cómo encontrar un puerto disponible?
- 19. ¿Qué puerto usa httpclient?
- 20. ¿Qué significa este mensaje de espacio aislado "deny mach-searchup"?
- 21. Cómo asegurarme de que un determinado puerto no esté ocupado por ningún otro proceso
- 22. comenzar GDB usando un pid
- 23. En Python, sin usar el sistema de archivos/proc, ¿cómo puedo saber si se está ejecutando un PID determinado?
- 24. En localhost, ¿cómo selecciono un número de puerto libre?
- 25. ¿Qué es exactamente Puerto escuchando
- 26. impulso :: asio del servidor - detectar la falta de escucha a puerto del servidor
- 27. Cómo agregar escucha de acción que escucha varios botones
- 28. Ruby: compruebe si hay un puerto abierto
- 29. Troqueles de símbolo de Mach-O (IOS)
- 30. Java: Obtenga un proceso dado un pid