fork

何时在 GitHub 中使用分叉和拉取请求

我正在为一个与 GitHub API 相关的项目工作,我想创建这样一个平台,让在 git 的一个分支中专门处理 repo 的用户,一旦他们完成了问题,他们将执行 PULL来自 Git 的请求,另一方面,我有一个单独的界面,我可以在其中查看用户在 Git 上使用 Git API 发送的所有拉取请求。 我已经创建了一个单独的界面,以便当我接受拉取请求时,我还希望例如触发该操作中的其他内容,比如付款。... »

哪些系统不支持 waitpid 的 WNOHANG 选项?

我有一个用于管理子进程的库,该库依赖于将 POSIX WNOHANG 选项传递给 waitpid 以对进程执行非阻塞等待。据说并不是所有的系统都支持这个选项,但是我已经有一段时间没有研究过这些系统了。哪些系统不支持此选项?我想知道以便我可以尝试为这些系统找到解决方法,或者我可以决定不针对这些系统。... »

如何打印共享内存中存储的数据?

我有以下程序: #include <stdio.h> #include <sys/types.h> #define MAX_COUNT 100 void ChildProcess(void); void ParentProcess(void); void main(void) { pid_t pid; pid = fork(); if ... »

c

使用 Fork() 创建三个子进程,只有 2 个孙子进程

使用 fork() 创建子进程,我正在尝试制作一个如下所示的树: p / | \ p p p / \ p p 我让父进程创建了三个子进程,但我无法让两个外部子进程停止分叉,而第二个子进程只分叉两次。 这是我的代码: #include <stdio.h> #include <stdlib.h> #include <sys/typ... »

c

退出语句不会退出所有进程

我目前正在运行一个带有 C++ 程序的 mini shell,当用户键入“exit”时,main_func() 返回-1。此时,将打印 print 语句(在子进程中),然后是 exit,但循环(在父进程中)继续运行。只有当我使用kill shell 命令时它才会真正结束,但这并不能彻底结束我的程序。 终止我的程序的函数 kill(0, SIGINT); // send an INT signal... »

c++

如何取消订阅 forkJoin 返回的 Observable?

在我的 Angular2-typescript 应用程序中,我使用 forkJoin 仅在进行所有并行 HTTP 调用后才返回 Observable。 问题:订阅回调无限期地执行 这是我的代码: http.service import {Http} from "@angular/http"; constructor (private _http: HTTP) {} makeGetReq... »

作为子进程,如何知道哪个文件描述符是父进程

我正在尝试编写一个程序,该程序分叉并等待他的孩子完成,然后孩子对输入进行一些工作,然后以与父母相同的方式进行分叉,依此类推。 现在,我知道 fork 会将文件描述符数组复制到子项,并且我应该关闭与父项关联的那些,但我不知道哪些是父项。我需要给我的孩子父母的 pid 吗? 一个多小时以来,我一直在努力思考它,我想我有某种思维障碍,因为我无法得出结论。 TL;DR:作为子进程,我如何知道哪些文件... »

c

从“setuid”进程中检测父进程的死亡

我编写调用fork() 来创建子进程的C 应用程序。该应用程序以 root 身份运行。在父进程中,我使用wait() 等待终止的子进程。在子进程中,我使用prctl() 和PR_SET_PDEATHSIG 选项来检测父进程的死亡。它工作正常。为了降低安全问题的风险,子进程调用setuid() 来更改UID。问题是:子进程无法再检测到父进程的死亡。 我四处寻找答案并找到了一些有用的链接,但没有帮助... »

c

Perl:无法执行

我正在尝试在不同平台上并行运行几个子进程。只有在所有子进程在各自平台上完成后,父进程才应继续进行。 问题是当我使用 fork 然后在子进程中运行“exec”命令时,它几乎立即结束。此外,输出不一致。几乎每次日志只显示一行。 -bash-2.05b$ cat Agent.SOLSPARC caught SIGTERM signal, cleaning up 或 -bash-2.05b$ ... »

pthread 的 malloc 内存,然后 fork + execvp

我收到一个事件,并基于该事件进行一些处理,然后 fork + execvp 一些其他程序(称为 some_jazzy_program)。最初我使用了一个while循环,我做了以下事情: while (some condition) { pid = fork(); if (pid == 0) { do_some_work() ... »

c

子进程完成后,SIGKILL 将无法停止子进程

我的程序创建 n 个子进程,每个子进程计数(+5)如果超过 100,它会向父进程发送信号,父进程应该杀死这个子进程。 我做了这个程序,但它不起作用,它一直在计算第一个孩子,这意味着 SIGKILL 不起作用。 #include<stdio.h> #include<stdlib.h> #include <sys/types.h> #include <unis... »

c

如何同步 GitHub 分叉?

我正在尝试按照here 找到的说明进行操作,但在第一步就失败了: C:\wxFork [master +42 ~0 -32 !]> git fetch upstream fatal: 'upstream' does not appear to be a git repository fatal: Could not read from remote repository. Please ... »

Perl,Parallel::ForkManager - 如何实现 fork 超时

是否可以使用 Parallel::ForkManager 为 fork 实现某种超时(时间限制)? 基本的 Parallel::ForkManager 脚本如下所示 use Parallel::ForkManager; my $pm = Parallel::ForkManager->new( 10 ); for ( 1 .. 1000 ) { $pm->start and ... »

FORK 不适用于 root 用户以外的用户

我有一个 systemd 服务文件,我在其中设置不同于 root 的用户和组。应用程序使用此服务文件运行。该应用程序在其代码中使用fork() 来启动一个新进程。 问题是 fork 命令不起作用,即它无法创建子 PID。以 root 用户身份运行服务时不会发生同样的情况。请帮忙提出一些建议。有什么功能,我想在服务文件中添加吗? CAP_SYS_ADMIN CAP_SYS_RESOURCE ... »

C : 将 PID 存储在全局变量中

我目前正在做一个学校项目,我想将我的进程的 PID 存储在全局数组 id 中,以便我可以在另一个函数中使用它: int id[3]; int main(int agrc,const char* agrv[]) { for(int i = 0; i < 3; i++) { if((fork() == 0)) { id[i] = (int)getpid(); ... »

c

在C中捕获信号并杀死所有孩子

我需要捕获 CTRL+C 并完成子进程,主进程必须等到完成它的东西,然后程序必须完成。 这是我的代码: void sigint_handler() { /*do something*/ printf("killing process %d\n",getpid()); exit(0); } int main () { signal(SIGINT, sigint_ha... »

c

将在子进程中创建的有效指针地址通过管道传递给父进程

我是编程新手,我编写的代码执行以下操作: 在指向“int 2”的fork() 父进程中创建一个指针地址。 父进程将指针地址转换为long int,然后是字符串。 父进程将字符串写入管道。 wait(NULL); 强制父进程等待子进程退出。 子进程继续将地址读入一个空字符串。 子进程将字符串转换回long int,然后转换为指针地址。 子进程尝试打印地址指向“int 2”的值。... »

c