cost 165 ms
信号处理/子进程的常规做法 - Conventional practice for signal handling/child processes

我无法理解如何处理与 Linux 中的子进程相关的 SIGTERM“应该”。 我正在 Bash 中编写命令行实用程序。 看起来像 很简单,对吧? 但是,如果向我的程序发送 SIGTERM 信号,则 Bash 脚本将结束,但当前子进程(例如command2 )将继续。 但是有了更多的代码,我可以像这样 ...

如何获取与终端关联的会话的会话ID? - How to get the session id of the session associated with a terminal?

在Linux中,每个终端仅与一个会话相关联(一个会话具有一个或多个进程组,而一个进程组具有一个或多个进程)。 是否有一些函数(或命令)采用tty设备文件(例如: /dev/tty1或/dev/pts/0 )并返回与此tty / terminal关联的会话ID? ...

标识符 PID、PPID、SID、PGID、UID、EUID 是什么意思? - What do the identifiers PID, PPID, SID, PGID, UID, EUID mean?

我被分配到 编写一个 C 程序,打印以下标识符 PID、PPID、SID、PGID、UID、EUID。 作业接着问 每个标识符代表什么? 我已经完成了程序,但没有找到对标识符的充分解释。 他们真正代表什么? 特别是 SID 和 PGID 标识符的目的是什么? ...

从task_struct和pid_namespace获取用户ID和进程组ID - Getting a user ID and a process group ID from a task_struct and a pid_namespace

我正在尝试修改Linux内核,我需要从task_struct和pid_namespace获取用户ID和进程组ID。 尽管我在源代码中搜索了它们的定义,但是我找不到任何全局变量或函数(可能由于缺少代码中的注释而丢失了)来访问它们。 因为我不能使用诸如getuid()类的用户空间函数,有没有 ...

信号处理程序中的pgid与实际的pgid不同 - pgid in signal handler is different from the real pgid

我有以下简单程序,可为STDIN设置主程序的pgid和pgroup。 然后,我有一个信号处理程序,可以打印当前进程的pgid和从中发送信号的进程的pgid。 这是我的代码 但是,当我按^ C时,我得到的输出是 由于程序在主程序中运行并且信号也从同一源发送,因此它们不是应该相同 ...

我的被​​叫脚本中有“捕获'echo ignore'USR1”的字样,为什么调用脚本被杀死? - I have “trap 'echo ignore' USR1” in my called script, why does the calling script get killed?

说我有以下两个bash脚本: 的/ tmp /捕手: 的/ tmp / usr1er: 捕获程序应该捕获USR1并直接忽略它。 它启动usr1er,并使用USR1信号终止其进程组。 现在,如果我从交互式shell本身以脚本形式启动trapper,它将杀死usr1er并正 ...

对所有子进程但对父进程均不适用 - SIGTERM to all children processes but not parent

我有一个通过响应信号进行操作的C程序。 一些信号导致父母分叉。 这允许在父级继续响应信号的同时进行其他处理。 当父母发送SIGTERM时,我希望分叉的孩子也收到SIGTERM。 子级在父级退出之前完成对SIGTERM的处理并不重要。 但是,使用以下代码,当我从父级调用kill( ...

交互式shell在孤立进程组中应该做什么? - What should interactive shells do in orphaned process groups?

简短的问题是,如果shell在没有tty的孤立进程组中应该怎么办? 但我建议阅读这个长问题,因为它很有趣。 这是一个有趣而令人兴奋的方式,使用您最喜欢的外壳将您的笔记本电脑变成便携式空间加热器(除非您是其中一个tcsh怪人): 这会导致bash将CPU固定在100%。 zsh和 ...

库子进程的进程组 - Process group for child processes of a library

我正在研究将集成到客户端代码中的库(C ++)。 这个lib将产生一些子进程,并且必须监视它们以在它们死后立即重新生成(出于任何原因)。 我需要使用vfork和exec生成那些子进程。 我知道我必须使用信号处理程序来处理SIGCHLD并调用waitpid以检测哪个孩子死了。 但是,用 ...

将进程发送到后台并将控制权返回给我的shell - Sending a process to the background and returning control to my shell

我正在为我的CS类编写一个shell,项目的一部分涉及如果用户传入'&'字符,则在后台运行一个进程。 如果一个进程在前台运行,我简单execvp过程,因为它是在前景它保持在该终端的控制。 但是,如果它是后台进程,我必须在开始执行进程后将控制权返回给我的主shell。 我知道系统调用tc ...

Linux 是否允许将进程组 ID 重新分配给进程? - Does Linux allow process group ids to be reassigned to processes?

假设 pid X是进程组的领导者并且X终止,但进程组中的其他进程仍在运行(以X作为它们的 pgid)。 Linux 会阻止将值X作为 pid 分配给新进程吗? 我之所以这样问,是因为 POSIX 允许setsid的失败条件: [EPERM] 调用进程已经是进程组组长,或者调用进程以外的进程组I ...

如何在自己的进程组中启动一个进程? - How to start a process in its own process group?

我想在它自己的进程组中启动一个进程(或者,一旦启动就改变它的组)并且: 让组中的进程从终端响应Ctrl + C 获取进程组的 ID,以便我可以通过kill命令终止组中的所有进程。 注意:我尝试了setsid prog [args]但进程没有从终端响应 Ctrl+C 也无法获得新的进程组 ID。 我 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM