使用system()和sleep()输入命令

时间:2016-08-01 20:38:39

标签: c++ cmd sleep

有没有办法使用system()并要求代码等待几秒钟?

我一直在尝试这样的事情:

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

但是,sleep()终止“MyCmd”执行。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

  

但是,sleep()会终止" MyCmd"执行。

没有。 sleep()表达式不会终止使用system()调用创建的子进程,表达式

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

将按顺序执行。

您可以做的是致电fork()创建子流程,在父流程中调用sleep(),以及kill()子流程,如果它仍在运行父进程唤醒后:

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;
}