/proc
私が知っている限り、LinuxにはPOSIXの一部ではないディレクトリとファイルシステムがあります。各サブディレクトリには、対応するPIDプロセスの実際の作業ディレクトリを指す/proc/$PID
シンボリックリンクがあります(このリンクは常に最新の状態です)。cwd
cwd
このシンボリックリンクは、他のシェルを使用したり、2つのシェル(正式に作業ディレクトリ)間でファイルを交換したりするなど、特定のユースケースに便利です。
POSIX機能のみを使用してこのようなものを簡単に取得する方法はありますか?
問題に関する追加情報
より正確に説明すると、接続と環境変数lileである必要はありません。$<PID>_CWD
それも大丈夫です。一見すると、そのような解決策が存在するとは信じていません。簡単に参照できる必要があります(シンボリックリンクや環境変数など)、他のプロセスが作業ディレクトリを切り替えるたびに常に最新の状態に保たれる必要があります。
ソリューションがPOSIXである必要はありません。最も重要な側面は移植性ですが、POSIXは確実に保証されています。
ベストアンサー1
lsof
BSDにはデフォルトでインストールされていないため、BSDで使用するにはインストールする必要があります。
シェルスクリプトを作成します。
#!/bin/sh
lsof -p $1 | grep cwd | awk '{print $9}'
パスのディレクトリにコピーします。最初のパラメータIEで指定されたPIDの作業ディレクトリを印刷します。
$ script 1987
/home/enedil