相关代码非常庞大,因此很抱歉我无法将其发布在这里。问题是:- 我写了一个小程序如下:
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<signal.h>
int main()
{
printf("\n Process id",getpid());
fflush(stdout);
if(kill(getpid(),SIGSTOP)!=0)
printf("\nError");
}
运行后我得到以下 o/p:
进程号 2664
[1]+ 停止./test_SIGSTOP
[目录路径]$
这正是我们所期望的。但是在我说的实际程序中,控制权就在 kill 调用之上(我知道它,因为我有打印语句并 fflushed 它们)并且挂起而没有自动停止进程和命令提示符的出现。 将不胜感激指点。 谢谢
最佳答案
您可以将调试器附加到正在运行的程序并找出它挂起的位置/原因。此外,raise()
函数使用起来更方便。但首先,使用 ps 并检查进程的标志以确认其状态(运行/休眠/停止)。
关于c - 停止自己的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6105831/