为什么当调用进程在后台运行时我们不能调用 tcsetattr 函数来设置伪终端的设置?

为什么当调用进程在后台运行时我们不能调用 tcsetattr 函数来设置伪终端的设置?

我正在做一个项目,需要保存和恢复伪终端的设置。我可以使用属性获取即使调用进程在后台,也可以保存终端设置。但是,情况与属性设置当调用进程在后台时,该函数用于恢复终端设置。它只是挂断在 tcsetattr 上。

有人知道为什么会发生这种情况吗?有人可以建议我如何实现后台进程的终端设置恢复吗?

编辑

情况:这是示例程序的工作流程,我正在尝试截取该程序的快照并稍后重新启动它:

main function
  -- opens a master pty with NOCTTY flag
  -- opens a slave pty with NOCTTY flag
  fork 
parent process
  -- close the slave and wait for child process
child process
  -- set up slave pty as a new controlling terminal
  -- saves controlling term setting i.e.slave
  -- run a while loop for 200 seconds (using SIGALARM) 
       and do some trivial task locally

相关内容