【问题标题】:Writing a C program to move a process to background编写 C 程序以将进程移至后台
【发布时间】:2013-11-22 07:04:08
【问题描述】:

我正在尝试编写一个程序,它执行forkexec 一个子进程并在后台执行它。

我会看到的一种方法是将输出重定向到/dev/NULL 文件并返回到我的主程序。还有其他想法吗?

【问题讨论】:

  • 提问时,请提供一个具体示例,说明您正在努力实现的目标以及您目前已完成的工作。在目前的状态下,您的问题无法真正得到回答,可能会被关闭。要了解有关提出重要问题的更多信息,请参阅如何提问-stackoverflow.com/questions/how-to-ask
  • 我正在创建自己的 shell,它模仿 linux shell 的行为。在这里我想实现'&' - 它在后台运行进程。希望它能更好地了解我的问题
  • @Srikanth:我建议将其编辑到您的问题中,并将其与现有内容进行协调。 (大多数 shell 不会使用 & 重定向输出。)
  • @Srikanth 你可以看看这个网站:stackoverflow.com/questions/116701/…
  • @Srikanth - 我不知道你想要什么。请编辑您的问题。

标签: c linux process background-process


【解决方案1】:

进程启动后,shell 不再控制进程文件描述符,因此您无法通过 shell 命令使其静音,即终端将其标准输入、标准输出和标准错误绑定到终端,如果不重新启动,您将无法对其执行任何操作- 获得对该终端的控制权。

有一个叫做retty的工具可以在这个链接看到retty这个工具是用来附加在终端上运行的进程

此外,您还可以使用内置的disown 命令来取消进程,这将阻止在 shell 退出时向程序发送SIGHUP 信号

此链接可能会有所帮助Link to a similar problem

【讨论】:

  • 谢谢,但是当你说 shell 不再控制进程时,我只是想知道“fg”是如何工作的?
  • 请正确阅读@Srikanth 我说的是进程文件描述符。而bg fg kill 是没有人可以阻止您使用的控制命令
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多