我想知道Mac OS上进程的工作目录(10.6)。我试图在ps命令的输出中找到PWD环境变量,但PWD变量在那里不可用。有没有更好的方式来找到这个在mac上运行的进程?mac os上运行进程的工作目录
回答
lsof -d cwd
将打印所有进程的当前工作目录。如果你想显示你没有自己的过程信息,你需要root权限运行它(即使用sudo
作为前缀)。如果您想仅显示某些程序或流程的信息,请使用lsof -a -d cwd -c programname
或lsof -a -d cwd -p processid
(注:在这两种情况下,-a
标志意味着其它标志的限制得到‘和’编在一起)。 lsof
相当复杂,并有更多的选择,所以阅读其手册页获取更多信息。
如果你在谈论一个Cocoa程序中做这件事,这将工作:
NSFileManager *fm = [[[NSFileManager alloc] init] autorelease];
NSString *currentPath = [fm currentDirectoryPath];
虽然Gordon Davisson's answer是伟大的,如果你想从代码做没有呼唤lsof
,这里的代码你需要。它的灵感来源于lsof和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;
}
此示例代码将产生如下所示的结果:
proc 44586 executable: /bin/zsh
proc 44586 cwd: /private/tmp
你从哪里找到OS X lsof源代码? –
https://opensource.apple.com/source/lsof/ – Charphacy
- 1. 无法在Mac OS X上的Grafana上运行CSS工作
- 2. 在Mac OS上运行Meteor App时出现Cordova目录错误
- 3. 在Mac OS X目录上的MySQL
- 4. 在OS X上以编程方式获取进程的当前工作目录
- 5. 如何检索在Java中运行进程的工作目录?
- 6. NSIS - 在运行之前设置进程的工作目录
- 7. Mac OS X中的shell脚本从主目录运行?
- 8. 在Mac OS上运行的RSCRIPT X
- 9. htacces MAC OS不能与伪目录中工作
- 10. 在Mac OS X上进行JNotify?
- 11. 无法在Mac OS X上运行mongod
- 12. Qt在Mac OS X Mountain Lion上运行
- 13. 在Mac OS X上运行Cassandra
- 14. rc.common没有在Mac OS上运行X
- 15. 获取ANDROID_LINT_COMPLETE_REGIONS在Mac OS X上运行
- 16. 无法在Mac OS上运行TLS1.2
- 17. 在Mac OS X上运行Virtualenv问题
- 18. 无法在Mac OS X上运行pkgin
- 19. 如何在Mac OS X上运行clojure?
- 20. 在Mac OS X上的Eclipse中运行外部工具
- 21. 停止运行Mac OS X Lion的MacBook Pro上启动的多个httpd进程?
- 22. 让GLSL 1.5在Mac OS X上工作
- 23. Java FileChannel.tryLock在Mac OS X上工作吗?
- 24. 从Windows作为平行客户运行Mac OS主机上的程序
- 25. 在Mac OS X上打开目录目录域名
- 26. Heroku登录无法在Mac OS X上运行El Capitan
- 27. 自制软件运行在Mac Os 10.10或10.11不工作
- 28. 在Mac OS X上显示正在运行的应用程序
- 29. cvs不再在远程终端的mac os x sierra上工作
- 30. 不能运行在Amazon Linux实例后台进程,但运行在MAC OS X
正是我一直在寻找,谢谢! – Aarkan