- ベストアンサー
シェルコマンドの実行を行いたい
シェルコマンドの実行は system("***.exe"); で行えますけど、system関数は実行したexeファイルが閉じられるまで処理がとまってしまいますよね? system関数を呼んだ後すぐに処理を返したい時はどうしたらいいのでしょうか。 また、2つ連続で実行ファイルを実行したいときにはどうしたらいいでしょうか。 system("1.exe"); system("2.exe"); これでは1.exeが終了しないと2.exeが起動しません。 バッチファイルでも同じ事になりますよね。 同時に起動したいのです。どうしたらいいのでしょうか、systemで躓いたので、 spawnで試してみました。 #include <process.h> #include <stdio.h> int main(){ spawn(P_NOWAIT,"notepad"); printf("notepadが起動しました。"); return 0; } こうすればnotepadを閉じなくてもprintf文が実行されると思ったのですが、コンパイルすると 未解決の_spawnが_main内で参照されました。 外部参照1が未解決です。 とでます・・。 どなたか解決策を教えてください>< OS:XPです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
方法にはこだわらないようなので 別アプローチ。 windows.h をインクルードして shellapi.h もインクルードして shell32.lib をリンク。 ShellExecute(NULL, "open", "notepad.exe", NULL, NULL, SW_SHOWNORMAL);
その他の回答 (2)
- FAY
- ベストアンサー率49% (95/193)
_spawn関数はそのままでは使えません。 使い方に応じて必要なサフィックスを付加する必要があります。
- Trick--o--
- ベストアンサー率20% (413/2034)
未解決の~ というのは、外部宣言だけされていて実体が見つからない場合です。 多くの場合は必要なDLLとリンクしていないのが原因です。 必要なものを調べてリンクしてください。