暂停线程是可以的,不过有个问题,你在代码里并不知道你要暂停哪条线程。
用进程快照找到进程->记录ID->用线程快照找到进程ID是前面记录ID的所有线程,SuspendThread
这样就就会把进程所属的所有线程暂停
看我下面的程序,子进程每两秒钟打印一次 Child print xxx
父进程fork子进程10秒后,向子进程发 SIGSTOP信号,让其停止运行。 再过5秒后,发 SIGCONT 让子进程恢复执行。再过20秒后,杀掉子进程,父进程也结束。还有疑问,可以baidu hi我,记得加分吧。
#include <sys/typesh>
#include <signalh>
#include <stdioh>
#include <unistdh>
void child_process()
{
int i = 0;
printf("Child start\n");
while(1)
{
sleep(2);
printf("Child print %d\n", ++i);
}
}
int main()
{
int pid;
printf("Fork child process \n");
sleep(1);
pid = fork();
if (pid > 0)
{
printf("This is parent process, I will stop child process ~10 seconds later\n");
sleep(10);
printf("Stop child process\n");
kill(pid, SIGSTOP);
printf("I will wake up child process 5 seconds later\n");
sleep(5);
printf("Wake up child process\n");
kill(pid, SIGCONT);
/ after 20 seconds, kill child /
sleep(20);
kill(pid, SIGKILL);
wait(NULL);
printf("Bye\n");
}
else
{
child_process();
}
return 0;
}
您好,很高兴为您解答!
BAT命令能否挂起我不清楚,但是易语言通过windows api是可以实现将某个进程挂起的。具体可以参考windows api文档。如果嫌windows api麻烦,那你可以直接用精易模块,那里面直接整合了进程挂起、进程提权等,一句代码就可以实现你要的功能。如果你要挂起的进程是系统进程的话,有时候需要提升权限。
当然了,用模块这种方法只是简便,但不适合初学者学习。若需要更好的了解其内部原理,我建议是去学习一下windows api。
手打很累,请勿转载,望采纳!
恢复进程DLL
版本 2
DLL命令 ResumeThread, , , "ResumeThread"
挂起(暂停)进程DLL
版本 2
DLL命令 SuspendThread, 整数型, , "SuspendThread"
以上就是关于用vc++的mfc怎么把一个进程中的线程挂起,高分悬赏全部的内容,包括:用vc++的mfc怎么把一个进程中的线程挂起,高分悬赏、用fork()创建的子进程怎么对其进行挂起以及挂起后怎么让其重新执行。要详细的代码。急... 大虾们帮帮忙、bat命令或易语言可以实现进程挂起吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)