こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

シェルコマンドの実行は

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です。

投稿日時 - 2006-04-14 05:52:21

QNo.2090959

困ってます

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

方法にはこだわらないようなので
別アプローチ。

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

投稿日時 - 2006-04-14 15:44:42

ANo.3

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

FAY

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

参考URL:http://www.microsoft.com/japan/developer/library/vccore/_crt__spawn.2c_._wspawn_functions.htm

投稿日時 - 2006-04-14 15:26:10

ANo.1

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

投稿日時 - 2006-04-14 11:25:30

あなたにオススメの質問