- PR -

system("")の使い方

1
投稿者投稿内容
francis
会議室デビュー日: 2003/07/30
投稿数: 17
投稿日時: 2003-08-11 10:32
今、LinuxでC言語の勉強してるんですが、CでLinuxのコマンドを実行するsystem()についての質問です。

このコマンド(別のコマンドでも構いませんが)で、例えばC言語のprintfみたいに%dや%sのようなフォーマットの指定は出来るんですか?

伝わってますか、僕の言いたいこと?
san12
常連さん
会議室デビュー日: 2003/06/19
投稿数: 26
投稿日時: 2003-08-11 11:05
引用:

francisさんの書き込み (2003-08-11 10:32) より:
今、LinuxでC言語の勉強してるんですが、CでLinuxのコマンドを実行するsystem()についての質問です。

このコマンド(別のコマンドでも構いませんが)で、例えばC言語のprintfみたいに%dや%sのようなフォーマットの指定は出来るんですか?

伝わってますか、僕の言いたいこと?


作成したプログラムから、何らかのコマンドを実行し、
出力結果を取り込みたいということでしょう。

ちなみに、その出力は当然、呼ばれる側のコマンドに
依存します。出力結果から自分の欲しい情報をのみを
得るには、その出力結果の文字列を編集しないといけ
ません。
 また、発行したコマンドの成否を見極めるには、$s
tatusをechoさせて確認するなどの方法もあります。

詳しくは、systemやpopenのmanを確認されてはいかが
でしょうか?

では。
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2003-08-11 11:15
永井です。

引用:

このコマンド(別のコマンドでも構いませんが)で、例えばC言語のprintfみたいに%dや%sのようなフォーマットの指定は出来るんですか?



関数に渡す文字列を任意フォーマットで加工して渡したいということでしょうか。
それでしたら、sprintfを用いればお望みの動作を得られると思います。

引用:

伝わってますか、僕の言いたいこと?



残念ながら、あまり主張が明快でないように感じられます。
併せて、具体例等挙げられると良いのではないかと。
francis
会議室デビュー日: 2003/07/30
投稿数: 17
投稿日時: 2003-08-11 11:51
ありがとうございます。
ちょうど本の中でsystemを使ってコマンドを出力している例が出てきたので、疑問に思って書き込ませていただきました。

system("ps -ax");

という例だったのですが、そこで例えばファイルの出力をする場合、

system("コマンド > %s.txt", 変数);

なんて事は出来たりしないのかなぁ、という素朴な疑問でした(あまりいい例ではありませんが)。
manを読んだりしたんですが、いまいちよく解らず、質問をした次第であります。
折角Linuxなのでそういう使い方も覚えておきたかったので・・・

永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2003-08-11 15:24
引用:

francisさんの書き込み (2003-08-11 11:51) より:
system("コマンド > %s.txt", 変数);

なんて事は出来たりしないのかなぁ、という素朴な疑問でした(あまりいい例ではありませんが)。



char buffer[十分な長さ];
sprintf(buffer, "コマンド > %s.txt", 変数);
system(buffer);

とかで実現出来ないでしょうか……と言ったつもりだったのですが、
うまく伝わっていなかったでしょうか。
#今、Cの環境がない上に、Cから遠ざかって久しいのであやふやですが。

引用:

折角Linuxなのでそういう使い方も覚えておきたかったので・・・



折角ですので、シェルに関しても勉強されてみるといいかも知れません。
#私なら、このようなケースではシェルの方を検討すると思います
francis
会議室デビュー日: 2003/07/30
投稿数: 17
投稿日時: 2003-08-11 17:05
永井さん、再度の書き込みありがとうございます。
やはりC上で実現するには、一度回り道をしなければならないみたいですね。
シェルに関しては、初歩的な部分であれば困らない程度に解っているつもりなので、次のステップとしてCあたりに言ってみようという話で感じた疑問でした。

精進します。
1

スキルアップ/キャリアアップ(JOB@IT)