2017-04-19 5 views
0

私は自分のプログラム変更ディレクトリ(ユーザが望むところ)を持っていますが、そこをナビゲートしてファイルを作成することができません。私はそこにナビゲートできると思われますが、次のシステムコールに行くと、現在のディレクトリに戻りますCWD C++ Windows

私のプログラムのcwdが指している場所を設定する方法はありますか?

std::string s1 = "cd " + userDirectory; 
system(s1.c_str()); 
system("dir > test.txt"); 
+1

'cd'は失敗しませんが、問題は' system'呼び出しの現在の作業ディレクトリを変更し、その呼び出しだけです。 – MSalters

答えて

2
+0

ああ素晴らしいです! chdir()が動作します! – NZSteve

+0

chdirはC標準ライブラリ(POSIX多分?)の一部ではないので、Windowsでは使用しないでください。 – VTT

+0

@VTT:Windows C APIの_chdirを追加しました。それはPOSIXです。 – Macke

0

Windowsでは、SetCurrentDirectoryW機能を使用して作業ディレクトリを変更できます。

2

system関数は、新しいコマンドインタープリタを新しいプロセスとして開始します。そして、そのコマンドインタープリタでコマンドを実行します。また、cdコマンドは組み込みコマンドであるため、コマンドインタプリタプロセスにのみ適用され、プロセスには適用されません。

あなたが試すことができソリューションのカップルがあります:

  • をあなたが実行するスクリプトファイルへのコマンド(cddirと他のすべてを)置きます。
  • の作業ディレクトリをプロセスに変更します。
関連する問題