问题标签 [sigchld]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 错误:gcc 中“wstat”的类型冲突
我从这个文档中复制了这个程序:https ://docs.oracle.com/cd/E19455-01/806-4750/signals-7/index.html
当我运行时,gcc main.c
我收到此错误:
据我了解wstat
,定义了两次。这是否意味着文档不正确?以及如何解决?
c - 捕获 SIGCHLD 并替换终止的孩子
我正在分叉 n 个孩子并将每个孩子的 pid_t 保存在动态分配的表中(是的,我想这样做,因为我需要父进程拥有这些 id)。我的程序应该期待一个 SIGCHLD 信号,当它收到它时,它必须替换终止的子进程。所以,现在我必须用 pid_t 改变 child 的数组索引,并用一个新的 fork 替换它。
我的问题是,我怎么能真正做这样的事情,因为处理程序将被称为我的主程序“外部”,并且无法访问我的 pid 表。也许使表全局化并且只为父级初始化它?或者处理程序可以与 main 交互并以某种方式传递被释放和替换的 pid 值?
我可能会问,我是否应该首先创建这样一个表。我应该只使用 fork 的返回值而不是 parent 的表吗?在这种情况下,我将不得不创建一个if语句来检查每个 pid=fork() 而不是只有一个if语句将只输入 parentid 并且对于表中每个孩子的 id 都有一个循环。
编辑:我看不出我的代码有什么帮助,因为我想我解释了这个过程,但我描述的是。
c - 我可以在 C 中使用 sigaction 的标志 siginfo 和 SIGCHLD 来获得终止进程的信号 int 常量(如 SIGINT 或 SIGKILL)吗?
我试图弄清楚我是否可以使用传递给标志设置为 SA_SIGINFO 的 sigaction 的自定义 SIGCHLD 处理程序来获得终止子进程的信号。据我了解,si_status 应该根据 si_code 值报告退出值或信号值。
这是 SIGCHLD 处理程序的代码:
现在我的问题是,首先:可以这样做吗?
第二:如果是,我可以使用 si_status 和 si_code 吗?
c - 当间隔太小时定时器撤防
SIGCONT
仅当间隔太小时,进程恢复后计时器似乎解除( )。我将 timer_create 与CLOCK_REALTIME
.
我的 linux 发行版是 ubuntu 20.04.1
这是显示问题的代码
当我设置timeForTimer
为 3 秒时,程序正常工作,2 秒它仍然工作,但 1 秒它不工作。编译:
这是较短的示例
在上面的例子中,只SIGSTOP
出现了一个信号。发送SIGCONT
命令kill -18 <pid>
后没有更多SIGSTOP
信号。看起来我的计时器被解除了。
sigaction - Handling Signal
Would someone please explain to me what this code does? In particular I don't understand the part with the signal handling.
I tried out the code and the result is:
X
D // after 2 seconds
B // after 2 seconds
C // after 4 seconds
A // after 4 seconds
E // after 4 seconds
c++ - c++ SIGCHLD创建错误的系统调用返回
这是我的代码(这只是一个例子)
我只是在“SIGCHLD”之前和之后使用系统调用运行“pwd”命令,我得到了两个不同的结果:
在这两种情况下,命令都会正确执行。
为什么signal(SIGCHLD, SIG_IGN);
会产生这个问题?有没有办法避免它?
python - Django runserver内存泄漏?
似乎不知从何而来,每当我调用我的 Django 模型的 url 时,无论是使用 ListView 还是 DetailView,它都会挂起,并且这样做时内存会飙升,我不得不杀死 runserver。我现在已经将此问题追溯到 subprocess._try_wait()。简单的解决方案似乎是引发 ChildProcessError。但这是源代码,我一直被告知不要乱用源代码。那么我应该如何解决这个问题呢?带装修师?那仍然必须进入源代码,不是吗?请指教。
另外,我注意到源代码中有一条关于 _try_wait() 之前的方法中的 python 错误的注释,即 _internal_poll()。请参阅 http://bugs.python.org/issue15756。然而,该错误在 2012 年被报告并一直修复,并且被认为与 1731717 相同,在 2007 年一直报告并在 Python 3.2 中修复。这个项目是我在 Python 3.9.9 上的第一个项目,所以我希望这个 bug 没有被重新引入。Django 是 3.2.9,操作系统是 Ubuntu 20.04。
此外,所有这些评论和错误报告都在谈论“SIGCLD 将被忽略”。但如果这是更好的方法,我该怎么做?我对C代码一无所知。
用 `sigaction(2)` 忽略 `SIGCHLD` 信号有什么用?
最后,我注意到这些来源都没有提到内存峰值。我不确定这是否有所作为。我假设内存泄漏 == 我所说的内存峰值。再次谢谢你。
linux - 当您从创建的线程之一 fork() 时会发生什么?
我试图了解以下如何在 Linux 中工作:
当您从创建的线程之一 fork() 时会发生什么?
- 其他线程会发生什么?
当你从主线程(调用 fork 的线程/进程)fork() 时会发生什么?
- 如果主线程/进程有多个线程在运行,会发生什么?所有线程是否也会重复?
在上述两种情况下,当分叉的子进程终止时,SIGCHLD 信号会发送到哪里?