8

Cプログラム内からコマンドプロンプトコマンドを実行しなければならないという問題があります。これが私がしたことです

#include<stdio.h>
#include<stdlib.h>


int main(){



system("cd \Users");
system("Dir");

}

問題は、最初にユーザーにcdしてから、コマンドDirを実行することです。現在、プログラムは指定されたパスを見つけることができないと出力し、Dirは親プロセスディレクトリ、つまりプログラムソースファイルが配置されている場所で実行されます。

私がやりたい実際のタスクは、Cプログラム内の特定のディレクトリからJavaファイルを実行することです。そのJavaファイルはC:\ Users \ Abdullah\proにあります。私のCプログラムの親ディレクトリはC:\ Users\Cprogです。これをどのように行うことができるかについてアドバイスしてください

4

5 に答える 5

6

system()新しいプロセスを開始します。この新しいプロセスは、現在のディレクトリを変更してから終了します。プログラムのプロセスの現在のディレクトリは変更されません。

あなたが欲しいchdir()(または_chdir())。

于 2012-05-30T07:18:05.243 に答える
5

あなたのプログラムにはいくつかの間違った仮定があります。まず、「cd」と「dir」はプログラムではなく、シェルcmd.exeに組み込まれているコマンドです。次に、現在のディレクトリをまったく変更する必要がないのではないかと思います。

いずれにせよ、これはWindowsシステムなので、CreateProcess()を使用してプログラムを起動する方法の例を見ていきます。

現在のディレクトリを変更するには、CreateProcess()呼び出しのlpCurrentDirectoryパラメータを確認してください。

于 2012-05-30T07:42:36.447 に答える
2

Windowsの場合のみ、このSetCurrentDirectory()関数もあります。

于 2012-05-30T07:23:23.417 に答える
0

' cd 'は、実行しようとしている個別の実行可能ファイルではありません。通常、「cd」はシェル/コマンドの組み込みコマンドです。'system()'で'cd'を実行して、プログラムで適切に機能させることはできません。プログラム内でディレクトリの変更を実行する場合は、「chdir()」関数(またはシステムコール)を使用する必要があります。'chdir()'のマニュアルページを参照してください。

于 2012-05-30T07:55:26.690 に答える
0

これは機能するはずです:

system("dir Users\\whatEverNextFolder > test.txt");
于 2015-04-28T20:16:18.267 に答える