2016-08-01 10 views
2

system()を使用してコードを数秒間待つ方法がありますか?system()とsleep()で入力コマンド

system("MyCmd"); 
sleep(8000); 

しかし、sleep()は "のMycmd" の実行を終了します。

は、私のような何かをしようとしています。

どのような考えですか?

+1

どのようなコードですか?そして、 'sleep()'で実行を終了させるにはどうすればいいですか?おそらく、プログラムが終了し、それによって 'MyCmd'が終了するからでしょう。 – Rakete1111

答えて

1

ただし、sleep()は "MyCmd"の実行を終了します。 sleep()式がsystem()呼び出しで作成された子プロセスは終了しません

号、表現

system("MyCmd"); 
sleep(8000); 

だけで順次実行されます。あなたは何ができるか


は、親プロセスが目覚めた後に、それはまだ実行している場合、kill()子プロセスを、子プロセスを作成するためにfork()を呼び出して、親プロセスでsleep()を呼び出し、することです:

pid_t pid = fork(); 

if (pid == 0) { 
    // child process 
    execl ("/bin/MyCmd", "MyCmd", (char *)0); 
} 
else if (pid > 0) { 
    // parent process 
    sleep(8000); 
    kill(pid,SIGKILL); 
} 
else { 
    // fork failed 
    printf("fork() failed!\n"); 
    return 1; 
} 
+0

スレッドを使うこともできます( 'fork()'が利用できないシステム(例えばWindowsの場合)でも使用できます。 – axalis

+0

@axalisもしあなたが 'std :: thread'を使っているなら、そのレベルの制御(' kill() ')はありません。 –

+0

しかし、コマンドを実行しているスレッドを "強制終了"(終了)することはできますか? Windows上での別の可能性は、CreateProcessであり、ここであなたは殺される新しいプロセスのハンドルを得ることができます。 – axalis

関連する問題