- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当我在 Linux
上用 C 语言执行 fork()
时,新创建的子进程是前台进程还是后台进程?
如果默认是前台的,有没有办法强制创建为后台进程?
我通读了很多关于fork
的链接,但是没有任何地方提到它是前景还是背景。
http://en.wikipedia.org/wiki/Fork_(system_call)
http://linux.die.net/man/2/fork
http://www.csl.mtu.edu/cs4411.ck/www/NOTES/process/fork/create.html
最佳答案
使用我在下面详述的命令简单地将序列设置为背景或前景。使用 pid = fork() 确保您在父级或子级中执行您想先设置的那个。在 parent 中,pid 将是 child 的 PID,在 child 中它将是 0。像这样使用它:
if(pid)
// Parent
else
// Child
过程
一个进程pid被放入进程组pgid中
setpgid(pid, pgid);
如果 pgid == pid 或 pgid == 0 那么这将创建一个新的进程组,进程组组长 pid。否则,这会将 pid 放入已经存在的进程组 pgid 中。零 pid 指的是当前进程。调用 setpgrp() 等同于 setpgid(0,0)。
前景
一个session中的进程组中至多有一个可以是该session的前台进程组。 tty 输入和 tty 信号(由 ^C、^Z 等生成的信号)进入该前台进程组中的进程。
进程可以使用 tcgetpgrp(fd) 确定其 session 中的前台进程组,其中 fd 指的是其控制 tty。如果没有,则返回一个大于 1 的随机值,该值不是进程组 ID。
一个进程可以使用tcsetpgrp(fd,pgrp)在它的session中设置前台进程组,其中fd指的是它的控制tty,pgrp是它session中的一个进程组,这个session仍然关联到controlling调用进程的tty。
如何获得fd?根据定义,/dev/tty 指的是控制 tty,完全独立于标准输入和输出的重定向。 (还有函数 ctermid() 来获取控制终端的名称。在 POSIX 标准系统上,它将返回/dev/tty。)打开控制 tty 的名称会得到一个文件描述符 fd。
背景
session 中所有不是前台进程组的进程组都是后台进程组。由于键盘用户正在与前台进程交互,后台进程应该远离它。当后台进程从终端读取时,它会收到一个 SIGTTIN 信号。通常,这将停止它,作业控制 shell 通知并告诉用户,谁可以说 fg 继续这个后台进程作为前台进程,然后这个进程可以从终端读取。但是,如果后台进程忽略或阻止 SIGTTIN 信号,或者如果其进程组是孤立的(见下文),则 read() 将返回 EIO 错误,并且不会发送任何信号。 (事实上,这个想法是告诉进程现在不允许从终端读取。如果它看不到信号,那么它会看到错误返回。)
当后台进程写入终端时,它可能会收到 SIGTTOU 信号。可能:即设置必须发生的标志时(默认情况下关闭)。可以通过以下方式设置标志
% stty tostop
再次清除它
% stty -tostop
检查它
% stty -a
关于c - C中fork的子进程是前台还是后台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30476971/
我正在关注 Android guide在媒体播放器应用程序中使用 MediaBrowserServiceCompat,但该服务在应用程序退出时被销毁。
我使用System.Windows.Window.IsActive来检测窗口是否位于前台,并且在某些情况下有效。但我发现了一些情况,它没有,我想知道是否有任何方法可以检测到它。 最佳答案 除非仅后台进
我需要为 EditText 的一部分设置样式。我希望文本为白色,背景为灰色。看起来很简单,但事实并非如此。 spanRange.setSpan(new BackgroundColorSpan(Colo
我决定在一个帖子中发布两个问题,因为这是完全相同的问题。 我需要知道屏幕何时打开或关闭,以便我可以打开 LED。第二个我需要知道我的应用程序是在后台还是在前台,以便在应用程序处于后台时管理在某些操作上
关于双高红色录音状态栏有很多问题( here , here ),但是当应用程序退出到后台时,所有这些问题都引用闪烁。我得到了一个闪光,我假设来自 AVCaptureSession设置,而应用程序在前台
我有一个奇怪的案例。我的 swift ios 应用程序已连接到 Cloudkit。如果应用程序未运行(后台状态),我每次都会收到通知徽章和警报!如果应用程序正在运行,则不会收到任何通知!我知道它没有击
我是 firebase 和 android 的新手,我想在我的应用程序中包含实时聊天。但我对 firebase 有以下疑问。请帮忙。 1) 如果应用程序在前台,系统托盘中是否会有默认通知,还是我必须在
我正在为 Excel 编写 VSTO 加载项,我注意到,如果我锁定工作表并使用密码保护它(因此只有我的加载项可以写入它,但用户可以查看它),如果用户尝试编辑工作表时,他们收到“此工作表已锁定”弹出窗口
我正在开发一个 iOS 应用程序,此应用程序允许其用户添加他稍后必须执行的任务。完成添加此任务后,它将发送到服务器以保存在服务器端。现在我对某些情况感到困惑:我的用户在输入任务详细信息时有什么电话..
我正在阅读内存不足 (OOM) killer ,以及 Android 如何确定进程的优先级 (https://developer.android.com/guide/components/proces
我已经在我的新应用程序中启动了一项服务。该服务是前台的,带有通知。当它在 AVD 2.1 API Level 7 中运行时,一切正常。但是当它在运行 Gingerbread 的 Samsung Gal
我的 Laravel 应用程序的结构需要帮助。 我想要的基本上是这个结构: 应用程序接口(interface) 管理面板 公共(public)网站 我开始构建我认为非常正确的文件夹结构: app/
我正在尝试用 CardView 填充我的 RecyclerView,CardView 使用 Android 数据绑定(bind)来设置属性,例如 TextView 中的文本。在未完成喷射的项目上,我想
我想使用 Window Script Host(WSH) 查找当前事件(具有焦点)的窗口的标题,因为我希望我的 WSH 脚本仅在所需窗口处于事件状态时才发送键。 注意*我无法使用替代方案,即在调用 s
如何调试 react-scripts 启动? 这工作正常,我不知道发生了什么变化(我没有改变任何东西) 看来 react-scripts start 无法作为前台进程继续运行。 我的 Dockerfi
我想制作像endonmondo那样的秒表。当我们启动应用程序时,它应该计算时间并更新主 Activity 中的textView(实际上它是一个 fragment )。 我做了后台服务(如 here )
我遇到了一个需求,但我无法获得正确的实现方式,因此需要您的帮助。 我想做什么? - 我想根据收到的通知执行操作,如下所示: 当应用程序打开并位于前台时,即对用户可见并且我收到通知时,我只是显示一个弹出
在 Android 10 中,我注意到我从操作系统收到一条 Toast 消息,说明“此 NFC 标签不支持应用程序”或“此 NFC 标签不支持应用程序”(取决于设备): 奇怪的是,我在 enableR
我是一名优秀的程序员,十分优秀!