特定のユーザー入力のパス名を取得しようとしています。例えば、ユーザがls | wc私は2つの文字列を最初に1つを(ls)、2つ目を1つ(wc)にしてパス名をつけたいと思っています。私はこれをCプログラムの中でやっています。私のコードは次のようになります。システムコールを使用してCで "which"コマンドを実行する
/*This is a basic example of what i'm trying to do*/
char* temp;
printf("Enter a command\n");
/* assume user enters ls */
scanf("%s", temp);
char* path = system(which temp);
printf("Testing proper output: %s\n", path);
/*I should be seeing "/bin/ls" but the system call doesn't work properly*/
誰かが正しい方向に向いていますか?
'のscanf( "%sの"、TEMP):ここで
は、例えば、(未テスト)です。 –
あなたは 'popen'を' system'ではなくしたいです。また、コンパイラに対して警告を有効にし、それらをエラーとして扱いたいとします。 gccを使用している場合は、 'gcc -Wall -Wextra -Werror'を試してください。 –
popenはパイプを作成してプロセスを開きます。それは私にパス名を与えるか、私は何かが欠けているように見えない?私はパスを見ようとするだけのコマンドを実行しようとしていません。 –