• ベストアンサー

シェルコマンドの実行を行いたい

シェルコマンドの実行は 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です。

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

  • ベストアンサー
  • ddnp009
  • ベストアンサー率25% (15/58)
回答No.3

方法にはこだわらないようなので 別アプローチ。 windows.h をインクルードして shellapi.h もインクルードして shell32.lib をリンク。 ShellExecute(NULL, "open", "notepad.exe", NULL, NULL, SW_SHOWNORMAL);

参考URL:
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpshell/html/_win32_shellexecute.asp

その他の回答 (2)

  • FAY
  • ベストアンサー率49% (95/193)
回答No.2

_spawn関数はそのままでは使えません。 使い方に応じて必要なサフィックスを付加する必要があります。

参考URL:
http://www.microsoft.com/japan/developer/library/vccore/_crt__spawn.2c_._wspawn_functions.htm
  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.1

未解決の~ というのは、外部宣言だけされていて実体が見つからない場合です。 多くの場合は必要なDLLとリンクしていないのが原因です。 必要なものを調べてリンクしてください。