Desidero conoscere la directory di lavoro di un processo su Mac OS (10.6). Ho provato a trovare la variabile di ambiente PWD nell'output del comando ps, ma la variabile PWD non è disponibile lì. C'è un modo migliore per trovare questo per un processo in esecuzione su Mac?directory di lavoro del processo in esecuzione su mac os
risposta
lsof -d cwd
stamperà le directory di lavoro correnti per tutti i processi. Se vuoi mostrare informazioni sui processi che non possiedi, devi eseguirlo come root (ad esempio, utilizza sudo
come prefisso). Se desideri mostrare le informazioni solo per determinati programmi o processi, utilizza ad es. lsof -a -d cwd -c programname
o lsof -a -d cwd -p processid
(nota: in entrambi i casi, il flag -a
significa che le restanti restrizioni degli altri flag diventano "ed" ed insieme). lsof
è piuttosto complesso e ha molte più opzioni, quindi leggi la sua pagina man per maggiori informazioni.
Se si sta parlando di farlo all'interno di un programma di cacao, questo funzionerà:
NSFileManager *fm = [[[NSFileManager alloc] init] autorelease];
NSString *currentPath = [fm currentDirectoryPath];
Anche se Gordon Davisson's answer è grande, se si vuole farlo da codice senza chiamando a lsof
, ecco il codice hai bisogno. È ispirato alla fonte lsof e allo 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;
}
Questo codice di esempio produrrà output come questo:
proc 44586 executable: /bin/zsh
proc 44586 cwd: /private/tmp
Dove hai trovato OS X come codice sorgente? –
https://opensource.apple.com/source/lsof/ – Charphacy
- 1. Ottieni l'attuale directory di lavoro del processo con un pid in modo programmatico su OS X
- 2. Il killall del terminale Mac OS X non uccide il processo in esecuzione
- 3. Esecuzione di Ant con JDK 1.6 su Mac OS X
- 4. Arresto del processo node.js su Mac
- 5. Come si imposta la directory di lavoro del processo principale?
- 6. Come posso utilizzare la directory/home su Mac OS X
- 7. Autorizzazioni XAMPP su Mac OS X?
- 8. RestComm edione ed esecuzione su MAC OS dalla sorgente
- 9. Verifica se il processo Mac è in esecuzione utilizzando Bash per nome processo
- 10. Mac OS X: un processo può eseguire il rendering nella finestra di un altro processo?
- 11. JNotify su Mac OS X?
- 12. Esempio di un processo su Mac OS X da un programma C/C++
- 13. Come ottenere il nome utente del processo tramite PID su Mac OS?
- 14. FreeGLUT su Mac OS X Lion
- 15. Directory di lavoro predefinita in Clion
- 16. Disabilita il processo di lavoro dell'area di lavoro in Eclipse
- 17. Decodifica del testo Mac OS in Python
- 18. Imposta posizione del cursore in Mac OS
- 19. Condividere la directory di Eclipse su Dropbox tra Windows e Mac OS X
- 20. C# Ottieni la directory di lavoro di un altro processo
- 21. Imparare ASP.NET MVC su Mac OS X
- 22. Come installare mod_jk su Mac OS X
- 23. Installazione OpenCV su Mac OS X
- 24. Installare libpq-dev su Mac OS X
- 25. Installazione di Java 6 su Mac OS
- 26. Sospensione automatica di Vagrant su Mac OS
- 27. Nessun dispositivo Java su Mac OS X
- 28. Come avviare un servizio mongodb su mac OS X?
- 29. Installare CLSQL su Mac OS X
- 30. Caricamento della lib di JNI su Mac OS X?
Esattamente quello che stavo cercando, grazie! – Aarkan