• ベストアンサー

Cのsystem()に対応するWindows API

C言語そのものの質問でなくてすみません。 Cではsystem()関数を用いてシステムコマンドを実行できますが,Windows APIで同等のものは存在するのでしょうか? ※ShellExecuteでは"dir"や"type"などは使えないため

質問者が選んだベストアンサー

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.4

Cランタイムライブラリにあるsystem()と同等のWin32 APIはCreateProcess()です。 system関数のソースを辿っていくと、最終的にはCreateProcessに行き着くはずです。

www15
質問者

お礼

ソース見てみればよかったんですね・・・。 今回私はCで開発しているわけではなかったので,Windows APIの範囲で出来ないか探してみていたところでした。 ありがとうございました。

その他の回答 (3)

回答No.3

補足です。 system() は、標準関数なので、仕様としては「プログラムを実行する」のではなくて、「標準シェルに引数で指定したコマンドを与える」形になります。 このため、system("dir") も(cmd.exe 経由で)正常に実行されます。

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.2

system()自体はきくはずです。 "dir"や"type"は、内部コマンドといって、コマンドインタープリタが実行を行っており、独立したプログラムではありません。 そのため、system()の引数にdirなどとしても、プログラムが存在しないため動きません。 今回の場合は、system("cmd /c dir");などとすれば動くと思います。

回答No.1

system() は、C言語の標準ライブラリなので、Windows 環境でも使用できますよ。 見た目(DOS プロンプトが立ち上がるので)問題あるとは思いますが。

関連するQ&A