- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
根据 man setpgid(2)
页面,
EACCES An attempt was made to change the process group ID of one of the children of the calling process and the child had already performed an execve(2) (setpgid(), setpgrp()).
ESRCH For getpgid(): pid does not match any process. For setpgid(): pid is not the calling process and not a child of the calling process.
根据描述errno应该是EACCES
。但为什么我得到的是 ESRCH
?
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
void print_errno() {
if (errno == EACCES) printf("errno: EACCES\n");
else if (errno == EPERM) printf("errno: EPERM\n");
else if (errno == ESRCH) printf("errno: ESRCH\n");
}
#define CHECK(syscall, msg) do { \
if ((syscall) == -1) { \
print_errno(); \
perror(msg); \
_exit(1); \
} \
} while(0)
int main () {
int ls_pid;
char *ls_argv[] = { "ls", NULL };
CHECK(ls_pid = fork(), "fork error");
if (!ls_pid) {
CHECK(execvp(ls_argv[0], ls_argv), "execvp error");
} else {
sleep(2);
CHECK(setpgid(ls_pid, ls_pid), "setpgid error");
CHECK(wait(NULL), "wait error");
printf("Finish\n");
}
}
最佳答案
specification of setpgid
没有说明当 pid 参数引用调用进程的 zombie 子进程时 setpgid
返回什么错误,无论它是否调用了 execve
。因此,这在技术上不是错误。
ESRCH
就有意义;它们只是需要保留的数据,直到有人开始调用 wait
。例如,当应用于僵尸时,kill
以 ESRCH
失败是很有意义的。
我想通过一些关于它的实际实现方式的观察来结束,但是,唉,我查看了 Linux 中 setpgid
的源代码,但无法弄清楚它会返回什么在这种情况下,因为 Linux 的 namespace 支持已将许多与进程相关的系统调用变成了可怕的意大利面条迷宫。所以后来我试图转而查看 FreeBSD,但我什至找不到源代码的相关部分,因为 FreeBSD 内核的文件级组织是不可理解的。所以你将不得不没有,抱歉。
关于c - 子僵尸进程的 setpgid 提供 ESRCH 而不是 EACCES?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48545762/
更新:-[NSIndexPath行]:消息发送到已释放实例0x895fe70 当我在设备上运行我的应用程序并进行分析时,它说: 将一个Objective-C消息发送到地址为0xaa722d0的已释放对
我现在大部分时间都在尝试调试我的 Backbone 多页面应用程序以摆脱“僵尸”,但不幸的是没有成功。在今天之前,我什至没有意识到我有一个僵尸问题。我做错了什么? 这是我的区域经理: var re
我确实读过这篇文章:https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem/ 设置一些上下文:文章
调试使用 iPhone SDK 3.x 目标构建的应用程序时是否支持 NSZombiesEnabled? 此外,如果支持的话,我可以在哪里获取支持的可能级别的列表吗? 最佳答案 是的,设备和模拟器都支
我正在尝试了解主干,并且目前正在努力尝试僵尸 View 。我已经阅读了很多有关此问题的堆栈溢出信息,但仍然无法解决。 为了简单起见,我设置了两个需要切换的 View (无数据)。 到目前为止,我所做的
我正在尝试使用 psycopg 和多处理插入和更新几百万行。查看 http://initd.org/psycopg/docs/usage.html#thread-and-process-safety
我的应用程序在 Linux 机器上进入僵尸状态,它无法被杀死并且 gdb 无法附加到它,我无法调试。现在我想知道最后调用的函数或回溯,无论如何我可以得到这个吗?/proc/pid/stat 下是否有我
我将我的程序作为守护进程运行。 父进程只等待子进程,当它意外死亡时,fork并再次等待。 for (; 1;) { if (fork() == 0) break; int sig = 0;
注意:我们使用的是 Backbone 1.0.0 我对 Backbone 比较陌生,并且打算通过前同事编写的一些代码。我不是盲目地复制粘贴东西,而是想了解他是如何做事的,这就是我开始思考处理僵尸 Vi
我的 Backbone Marionette 应用程序出现问题,我的 subview 没有被完全破坏。您如何正确销毁要替换为另一个布局/项目 View 的嵌套布局 View ? 我对 Marionet
我有两个应用程序在一个服务器上运行,它们执行 headless (headless)浏览任务。每次浏览时,Xvfb 进程并没有死,而是变成了僵尸。我可以用以下脚本确认这一点。 require 'hea
我正在尝试使用 Marionet 模块来玩 Backbone。 例如。实现“加载微调器”,正如 David Sulc 在“contact manager”应用程序中所做的那样,Firefox 的“ba
当我尝试使用 Xcode 菜单(Product - Archive)直接存档项目时,效果很好。但是当我尝试从集成菜单 (bot) 执行它时,出现了这个错误: Build operation faile
我有一个从 nib 构建的 MainWindow 类,设置如下: - (void)applicationDidFinishLaunching:(UIApplication *)application
我关注 this answer跟踪我的应用的 EXC_BAD_ACCESS。是的,我有一个僵尸物体。当我试图找出哪一行代码是错误的时,我发现所有负责任的图书馆都是基金会的。 当我尝试这样做时: Whe
我是 iOS 开发的新手,非常感谢您帮助我找出我遇到的错误的根本原因。 我尝试使用 Instruments(即 Allocations-Zombie Profiler)调试错误,但我无法理解所呈现的调
我是一名优秀的程序员,十分优秀!