- ベストアンサー
Cのsystem()に対応するWindows API
C言語そのものの質問でなくてすみません。 Cではsystem()関数を用いてシステムコマンドを実行できますが,Windows APIで同等のものは存在するのでしょうか? ※ShellExecuteでは"dir"や"type"などは使えないため
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Cランタイムライブラリにあるsystem()と同等のWin32 APIはCreateProcess()です。 system関数のソースを辿っていくと、最終的にはCreateProcessに行き着くはずです。
その他の回答 (3)
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
回答No.3
補足です。 system() は、標準関数なので、仕様としては「プログラムを実行する」のではなくて、「標準シェルに引数で指定したコマンドを与える」形になります。 このため、system("dir") も(cmd.exe 経由で)正常に実行されます。
- ngsvx
- ベストアンサー率49% (157/315)
回答No.2
system()自体はきくはずです。 "dir"や"type"は、内部コマンドといって、コマンドインタープリタが実行を行っており、独立したプログラムではありません。 そのため、system()の引数にdirなどとしても、プログラムが存在しないため動きません。 今回の場合は、system("cmd /c dir");などとすれば動くと思います。
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
回答No.1
system() は、C言語の標準ライブラリなので、Windows 環境でも使用できますよ。 見た目(DOS プロンプトが立ち上がるので)問題あるとは思いますが。
お礼
ソース見てみればよかったんですね・・・。 今回私はCで開発しているわけではなかったので,Windows APIの範囲で出来ないか探してみていたところでした。 ありがとうございました。