在C中暂停子进程

在C中暂停子进程,c,signals,C,Signals,在我的C程序中,当用户输入为“p”时,我试图暂停execl创建的子进程的状态。我有两个终端,一个用于输入,它是父进程,另一个用于输出,它是子进程。我在子进程中有信号处理程序,父进程可以发送给它,以提高和降低其输出的速度。我试过了 kill(child_pid,SIGSTOP) 但这只会阻止孩子和家长 到目前为止,为了暂停,我让信号处理器保存当前速度,然后将速度更改为2147483647秒,然后当它们恢复时,会将保存的速度恢复。这合理吗?(大约68年,我有一个循环) 用下面的代码将输出发送到其他

在我的C程序中,当用户输入为“p”时,我试图暂停execl创建的子进程的状态。我有两个终端,一个用于输入,它是父进程,另一个用于输出,它是子进程。我在子进程中有信号处理程序,父进程可以发送给它,以提高和降低其输出的速度。我试过了

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?事实上,这正是我的问题所在,很高兴我的评论帮助了你。