在C中暂停子进程
在我的C程序中,当用户输入为“p”时,我试图暂停execl创建的子进程的状态。我有两个终端,一个用于输入,它是父进程,另一个用于输出,它是子进程。我在子进程中有信号处理程序,父进程可以发送给它,以提高和降低其输出的速度。我试过了在C中暂停子进程,c,signals,C,Signals,在我的C程序中,当用户输入为“p”时,我试图暂停execl创建的子进程的状态。我有两个终端,一个用于输入,它是父进程,另一个用于输出,它是子进程。我在子进程中有信号处理程序,父进程可以发送给它,以提高和降低其输出的速度。我试过了 kill(child_pid,SIGSTOP) 但这只会阻止孩子和家长 到目前为止,为了暂停,我让信号处理器保存当前速度,然后将速度更改为2147483647秒,然后当它们恢复时,会将保存的速度恢复。这合理吗?(大约68年,我有一个循环) 用下面的代码将输出发送到其他
kill(child_pid,SIGSTOP)
但这只会阻止孩子和家长
到目前为止,为了暂停,我让信号处理器保存当前速度,然后将速度更改为2147483647秒,然后当它们恢复时,会将保存的速度恢复。这合理吗?(大约68年,我有一个循环)
用下面的代码将输出发送到其他终端
static state* start_button(void)
{
state *destination;
pid_t pid;
pid = fork();
switch(pid)
{
case -1:
destination = &ready;
break;
case 0:
execl("./outputTerminal",
"outputTerminal",file_number,"/dev/ttys001",NULL);
break;
default:
destination = &going;
break;
}
return destination;
}
您是如何使子进程的stdout成为第二个终端的?你介意分享你的代码吗?你所说的“我有信号”是什么意思?您希望SIGSTOP信号做什么?这个信号不能被忽略并停止接收过程的执行…我所说的“我有信号”是指我使用SIGUSR1和SIGUSR2创建了信号处理程序。我希望SIGSTOP能够停止exec创建的进程,并保持主进程继续运行@TonyTannous调用SIGSTOP时,我的child\u pid是否可能因为任何原因为0?事实上,这正是我的问题所在,很高兴我的评论帮助了你。你是如何使子进程的stdout成为第二个终端的?你介意分享你的代码吗?你所说的“我有信号”是什么意思?您希望SIGSTOP信号做什么?这个信号不能被忽略并停止接收过程的执行…我所说的“我有信号”是指我使用SIGUSR1和SIGUSR2创建了信号处理程序。我希望SIGSTOP能够停止exec创建的进程,并保持主进程继续运行@TonyTannous我调用SIGSTOP时,是否可能因为任何原因我的孩子的pid为0?事实上,这正是我的问题所在,很高兴我的评论帮助了你。