Quiero saber el directorio de trabajo de un proceso en Mac OS (10.6). Intenté encontrar la variable de entorno PWD en la salida del comando ps, pero la variable PWD no está disponible allí. ¿Hay alguna forma mejor de encontrar esto para un proceso en ejecución en mac?directorio de trabajo del proceso en ejecución en mac os
Respuesta
lsof -d cwd
imprimirá los directorios de trabajo actuales para todos sus procesos. Si desea mostrar información sobre procesos que no le pertenecen, debe ejecutarlo como raíz (es decir, use sudo
como prefijo). Si desea mostrar la información solo para ciertos programas o procesos, use, p. lsof -a -d cwd -c programname
o lsof -a -d cwd -p processid
(nota: en ambos casos, la bandera -a
significa que las restricciones de las otras banderas obtienen "y" ed juntas). lsof
es bastante complejo y tiene muchas más opciones, así que lea su página de manual para obtener más información.
Si estamos hablando acerca de hacerlo dentro de un programa de cacao, esto va a funcionar:
NSFileManager *fm = [[[NSFileManager alloc] init] autorelease];
NSString *currentPath = [fm currentDirectoryPath];
Aunque Gordon Davisson's answer es grande, si quieres hacerlo desde código sin necesidad de llamar a lsof
, aquí está el código necesitas. Está inspirado en la fuente lsof y this blog post.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <libproc.h>
int main (int argc, char* argv[])
{
int ret;
pid_t pid;
char pathbuf[PROC_PIDPATHINFO_MAXSIZE];
struct proc_vnodepathinfo vpi;
if (argc > 1) {
pid = (pid_t) atoi(argv[1]);
ret = proc_pidpath (pid, pathbuf, sizeof(pathbuf));
if (ret <= 0) {
fprintf(stderr, "PID %d: proc_pidpath();\n", pid);
fprintf(stderr, " %s\n", strerror(errno));
return 1;
}
printf("proc %d executable: %s\n", pid, pathbuf);
ret = proc_pidinfo(pid, PROC_PIDVNODEPATHINFO, 0, &vpi,
sizeof(vpi));
if (ret <= 0) {
fprintf(stderr, "PID %d: proc_pidinfo();\n", pid);
fprintf(stderr, " %s\n", strerror(errno));
return 1;
}
printf("proc %d cwd: %s\n", pid, vpi.pvi_cdir.vip_path);
// printf("proc %d root: %s\n", pid, vpi.pvi_rdir.vip_path);
}
return 0;
}
Este código de ejemplo producirá una salida como ésta:
proc 44586 executable: /bin/zsh
proc 44586 cwd: /private/tmp
¿Dónde encontraste el código fuente OS X lsof? –
https://opensource.apple.com/source/lsof/ – Charphacy
- 1. Configuración del nombre del proceso en Mac OS X en tiempo de ejecución
- 2. Obtenga el directorio de trabajo actual del proceso con un pid programáticamente en OS X
- 3. ¿Cómo obtener el PID de un proceso dando el nombre del proceso en Mac OS X?
- 4. Mac OS X terminal killall no matará el proceso en ejecución
- 5. ¿Cómo puedo usar el directorio/home en Mac OS X
- 6. ¿Cómo obtener el nombre de usuario del proceso por PID en Mac OS?
- 7. Mac OS X: ¿Se puede procesar un procesamiento en la ventana de otro proceso?
- 8. instalación del complemento BlackBerry Eclipse JDE en Mac OS X
- 9. pid del proceso actualmente en ejecución
- 10. Inno Setup Comprobación del proceso en ejecución
- 11. C# Obtener el directorio de trabajo de otro proceso
- 12. fs.watch a través del nodo 0.5.9 en Mac OS X
- 13. Cargando JNI lib en Mac OS X?
- 14. Obteniendo la dirección base del proceso en Mac OSX
- 15. JNotify en Mac OS X?
- 16. Búsqueda de rutas del disco USB en Mac OS 10.4
- 17. Compartir el directorio de Eclipse en Dropbox entre Windows y Mac OS X
- 18. Muestra un proceso en Mac OS X desde un programa C/C++
- 19. ¿Deshabilitar correo de PHP en Mac OS?
- 20. Ejecución de Python no es del sistema con virtualenv en el modo de 32 bits en Mac OS X
- 21. Actualizaciones de aplicaciones en Mac OS X
- 22. clamxav homebrew mac os x
- 23. Aprendiendo ASP.NET MVC en Mac OS X
- 24. Comportamiento del teclado jEdit Mac OS
- 25. Obteniendo la posición "global" del mouse en Mac OS X
- 26. Simular un movimiento físico del mouse en Mac OS X
- 27. Establecer la posición del cursor en Mac OS
- 28. Supervisión del portapapeles en Mac OS X | Java
- 29. Ingrese en un directorio a través de un alias en el terminal Mac OS X
- 30. Los scripts de shell en Mac OS X se ejecutan desde el directorio de inicio?
Exactamente lo que estaba buscando, gracias! – Aarkan