問題タブ [getcwd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 'C:' が意味を持っていないのはなぜですか?
Windows 7 では、IDLE Python 2.7.5 シェルを起動します。
何が起こっているのか、なぜこれほど複雑なことが必要なのでしょうか?
perl - cwd および gwtcwd は、Windows で Linux スタイルのパスを返します。
このスクリプトを実行すると:
出力は次のとおりです。
Windows スタイルのパスを取得するにはどうすればよいC:\tmp
ですか?
c - C言語のUnixシェル - ディレクトリの変更
私は単純なシェルに取り組んでいる別の CS 初心者です。現時点では、引数が渡された場合は現在のディレクトリを変更しようとしています。それ以外の場合は、現在のディレクトリに報告します。
プログラムで使用chdir()
してみましたが、明らかに機能していません。char*
トークン化された引数を渡そうとしました。も試しましargv[1]
たが、どちらもうまくいかないようなので、何か間違ったことをしているに違いありません。
また、引数ポインター (ディレクトリ文字列を含む) を静的にする方法が正確にわからないため、 putenv(ARGUMENT HERE) を使用しても問題はありません。
これが私のコードの関連部分です:
ポインター argmnts は、トークン化された引数の部分を指します。char strnBuffer[1000]
これは、コマンドに対して既にトークン化されています。command[0] = strtok(strnBuffer, " ");
ヘルプ/洞察に本当に感謝しています。
ありがとうございました。
python - シンボリック リンク経由で Python スクリプトを起動する
「scripts」ディレクトリに存在する実行可能なpythonスクリプトがあり、ルートディレクトリにそのスクリプト(ファイルの起動に使用される)へのシンボリックリンクがあります。何かのようなもの:
次の方法でスクリプトを起動/実行できるようにしたいと思います。
ルート ディレクトリから。i_build.py スクリプトは i_Props.ini を開こうとし、そこにあるものに基づいていくつかの魔法を実行します。
問題は、i_build.py スクリプトがルート ディレクトリのシンボリック リンクを介して起動されると、i_build.py スクリプトが他のファイルのルート ディレクトリを検索することです (i_build.py が保存されている /scripts ディレクトリではありません)。
i_build.py ファイルの props ファイルの場所は次のとおりです。
それを開こうとして失敗します。明らかな理由から、パスをハードコーディングしたくありません。
メインファイルに追加する簡単なテストos.getcwd()
では、CWD がルートディレクトリであると考えているという私の疑いが確認され、チェックすると、__file__
それがシンボリックリンク ("build_i") であることがわかります。
__file__
名前やCWDなどのシンボリックの宛先をPythonに使用させるためにできることはありますか?
pwd - xv6 で iget() が隠されている理由
Unix バージョン 6 の最新の実装であるxv6で少し遊んでいます。
私の最初のハックでは、単純な syscall を実装したかったのgetcwd
ですが、どのレベルの抽象化を使用すればよいかについて少し迷っています。
struct file
インターフェイスを使用する必要がありますか?- それとも
struct inode
インターフェイス? - 重要なのは、純粋にユーザーランドに実装することさえできるようです。
struct inode
私は操作でそれを実装し始めました。私の素朴な考えは、 を取得しproc->cwd
、次にreadi()
その 2 番目のエントリ ( ..
) を取得し、それをスキャンして前inum
の を取得する、というように、ルートに到達するまで再帰的に繰り返すというものでした。
パフォーマンスはあまり高くないようですが、最初のハックには適しています。
私の問題は、 s で取得した sからfs.c:iget()
a を取得する必要があることです。私はそれが static で宣言されていないことに気付きましたが、これは私を少し悩ませますが、その理由を見つけることができません。struct inode
inum
dirent
iget()
fs.c
defs.h
これが私の質問です。iget()
カーネルの残りの部分から故意に隠されているのはなぜですか?
c - getcwd() の GNU C 実装のパフォーマンス
getcwd() に関するGNU Lib Cのドキュメントによると...
この関数の GNU C ライブラリ バージョンでは、バッファ引数にヌル ポインタを指定することもできます。次に getcwd は、malloc と同様に自動的にバッファーを割り当てます (Unconstrained Allocation を参照)。サイズが 0 より大きい場合、バッファはその大きさです。それ以外の場合、バッファは結果を保持するのに必要なだけ大きくなります。
ここで、GNU ドキュメントで説明されている標準の getcwd() を使用した実装に注目してください。
これは、移植性と安定性に優れているように見えますが、メモリの割り当てと解放のすべてが面倒な妥協のようにも見えます。関数が頻繁に呼び出される可能性があることを考えると、これはパフォーマンス上の問題になる可能性がありますか?
*「プロファイリングする」と言うのは簡単ですが、これは考えられるすべてのシステムを説明することはできません。現在または将来。
working-directory - Perl Cwd::cwd と Cwd::getcwd 関数の違いは?
質問
一般的に、特定のプラットフォームに関係なく、Perl でのCwd::cwd
との違いは何ですか? Cwd::getcwd
Perl に両方があるのはなぜですか? 使用目的は何ですか?どのシナリオでどれを使用すればよいですか? (ユースケースの例をいただければ幸いです。)それは重要ですか?(私はそれらを混ぜないと仮定します。)どちらかを選択すると、移植性に何らかの影響がありますか? モジュールでより一般的に使用されるのはどれですか?
マニュアルを解釈しても、まれなケースを除いて、から呼び出すだけでcwd
ある`pwd`
と言っていますが、実際の違いは何ですか? とにかく、これはPOSIXシステムでのみ機能します。getcwd
getcwd
unistd.h
私はいつでも実装を読むことができますが、それらの関数の意味については何も教えてくれません。実装の詳細は変更される可能性があり、定義された意味ではありません。(そうしないと重大な問題である重大な変更が発生します。)
マニュアルには何と書かれていますか
PerlのCwdモジュールのマンページを引用:
これらの各関数は引数なしで呼び出され、現在の作業ディレクトリの絶対パスを返します。
getcwd
my $cwd = getcwd();
現在の作業ディレクトリを返します。
POSIX 関数 getcwd(3) を公開するか、利用できない場合は再実装します。
cwd
my $cwd = cwd();
cwd() は、現在のアーキテクチャにとって最も自然な形式です。ほとんどのシステムでは、これは `pwd` と同じです (ただし、末尾の行ターミネータはありません)。
そしてメモセクションで:
- 実際、Mac OS では、
getcwd()
関数fastgetcwd()
とfastcwd()
関数はすべて関数のエイリアスでcwd()
あり、Mac OS では「pwd」を呼び出します。同様に、abs_path()
関数はのエイリアスですfast_abs_path()
OK、Mac OS 1getcwd()
では と の間に違いはないことはわかっています。cwd()
どちらも実際には`pwd`
. しかし、他のプラットフォームではどうでしょうか? (特に Debian Linux に興味があります。 )
1 OS X ではなく、従来の Mac OS。Mac OS と OS Xの$^O
値はそれぞれMacOS
とdarwin
です。@tobyinkと@ikegamiに感謝します。
そして、ちょっとしたメタ質問: 非常によく似た機能を持つ他のモジュールに対して同様の質問をしないようにするにはどうすればよいですか? 実装を掘り下げる以外に、違いを発見する普遍的な方法はありますか? (現在、ドキュメントの使用目的や相違点が明確でない場合は、経験豊富な人に尋ねるか、自分で実装を読む必要があると思います。 )
c++ - iOS getcwd の代替
C++ OpenGL アプリケーションを iOS に移植しています。getcwd 関数を使用してシェーダーをロードします。iOS では「getcwd」はスラッシュだけを返し、何もできません。または、iOS でファイルをロードする良い方法はありますか?
編集:解決策を見つけました!POSIX ベースのコード。