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
はかなり複雑で多くのオプションがありますので、詳細はmanページをお読みください。
あなたはココアプログラム内でそれをやって話をしている場合、これは動作します:
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のソースコードはどこで見つかりましたか? –
https://opensource.apple.com/source/lsof/ – Charphacy
- 1. Mac OS X - 実行中のターミナルコマンドasync
- 2. Linux上で実行中のプログラムのディレクトリ?
- 3. Mac OSでx11を実行
- 4. curlコマンドの実行エラー - 作業ディレクトリのIOException - Android OS関連の問題
- 5. Mac OS Xで実行中のすべてのアプリケーションを表示
- 6. マウスでMac OSをクリックして実行中のOSアプリケーションを検出します
- 7. Mac OSでのPython GIMPスクリプトの実行
- 8. Mac OS X localhost上でASP.NET Composite C1を実行するには?
- 9. Mac OS X上でJDK 1.6を使用してAntを実行
- 10. MAC OS X:PackageMakerは、インストール前の動作中にドライバのインストールを実行します。
- 11. Objective-C、Mac OS Xアプリケーションの実行中に常にメソッドを実行
- 12. ライオンOS:バックグラウンドでMacアプリを実行
- 13. Mac OS XでELF実行ファイルを作成するには?
- 14. Mac OS X上で実行中のAppsのリストをBashで取得しますか?
- 15. 別の作業ディレクトリでシェルコマンドを実行する方法
- 16. Innoセットアップ:特定の作業ディレクトリでregsvr32を実行します。
- 17. 別の作業ディレクトリからGit操作を実行する
- 18. Mac OS X上のJavaプロファイラツール
- 19. Mac OS X上のUSB
- 20. Mac OS X上の.NETコアインストール
- 21. のMac OS X NodeJS:Macのポートを使用して、MAC OS X上
- 22. phpスクリプトを実行するMac OSアプリ
- 23. Mac OS上でこのプログラムをX11用に実行するには?
- 24. Mac OS上でのwx.DirDialogのローカライゼーション
- 25. Djangoアプリケーションのスーパーバイザで実行中のセールス作業者のトラブルシューティング
- 26. Mac OS X上のQT、QFileSystemModelでSetRootPath
- 27. Mac OS XでQtコンソールアプリケーションプログラムを実行中にエラーが発生しました
- 28. "sh:sysctlコマンドが見つかりません" Mac OS Xでcronジョブを実行中
- 29. Objective-Cの作業ディレクトリとXcode:デバッグモードと実行可能ファイル
- 30. 他の作業ディレクトリから `git clean`を実行しました
私は感謝、探していたまさに! – Aarkan