ページ 11

プログラム実行

Posted: 2011年12月03日(土) 23:06
by x_kai
いま、入力された文字を検索して、
入力された文字とマッチする実行ファイルがあれば実行する
という機能をC言語で作成しているのですが、

どうやっていいかまるで分かりません。

system関数を使う場合、
system(command); このように、変数を入れることは出来ますが、

この場合、入力された実行ファイルの名前がシェルで実行されてしまいます。
ずっと考えているのですが、なかなかいい答えが見当たらないので、

何かアドバイス等があればお願いします。。

Re: プログラム実行

Posted: 2011年12月03日(土) 23:13
by box
x_kai さんが書きました: 入力された文字とマッチする実行ファイルがあれば実行する
こういう風にしたいけれど、
x_kai さんが書きました: この場合、入力された実行ファイルの名前がシェルで実行されてしまいます。
こういう方法はとりたくない、ということでしょうか。

実行できればよいのであれば、シェルで実行しようがどうしようが別にいいのではないか、
という考えではまずいですか?

Re: プログラム実行

Posted: 2011年12月03日(土) 23:16
by x_kai
box さんが書きました:
x_kai さんが書きました: 入力された文字とマッチする実行ファイルがあれば実行する
こういう風にしたいけれど、
x_kai さんが書きました: この場合、入力された実行ファイルの名前がシェルで実行されてしまいます。
こういう方法はとりたくない、ということでしょうか。

実行できればよいのであれば、シェルで実行しようがどうしようが別にいいのではないか、
という考えではまずいですか?
すみません、説明不足でした。

例えば、a と入力されたら、
command変数には"a"と代入されるので、

system(command); の場合だと、
シェルでは、エラーになってしまいます。

プログラムの実行には、

./a このようにしなければいけないので、
どうしようかと考えているところなのです。

Re: プログラム実行

Posted: 2011年12月03日(土) 23:19
by box
a
と入力したら
./
の後ろに
a
をくっつけるような処理(sprintfとかstrcatとかを使って)をして、
system()に渡すだけではないのでしょうか。

Re: プログラム実行

Posted: 2011年12月03日(土) 23:29
by x_kai
box さんが書きました:a
と入力したら
./
の後ろに
a
をくっつけるような処理(sprintfとかstrcatとかを使って)をして、
system()に渡すだけではないのでしょうか。
出来ました。
初歩的なことですみませんでした、また質問させていただきます。