fork 相关问题

`fork()`函数是通过复制调用进程来创建新进程的Unix / Linux / POSIX方法。

尽管将 PTRACE_SETOPTIONS 设置为 PTRACE_O_TRACEFORK,ptrace 仍不记录分叉进程

我正在尝试使用 ptrace 跟踪程序的系统调用,但是当跟踪的程序有 fork() 并且忽略它时,它不起作用,据说您只需要设置下面的行即可。 .

回答 1 投票 0

创建副本memfd_create

我正在使用 memfd_create 将文件保存在内存中,但是当我分叉时,该文件在两个进程之间共享。 是否有可能以这样的方式将父母和孩子脱钩,让孩子......

回答 1 投票 0

systemd 中双 fork 后子进程不执行

我有这个 C 代码来守护 systemd 服务: 静态无效 daemon_me(char *my_name) { pid_t 新_pid; 结构体 sigaction sig_act; 整数我; int f0、f1、f2; int my_mask; 掩码(...

回答 1 投票 0

如何用c语言正常运行这两个进程?

这段代码工作正常,但消费者进程不起作用,我试图获取 Producer_pid 值并检查发生了什么,但是当我编写 printf("%d “,生产者_pid)它给出了两个值......

回答 1 投票 0

wait((int *)0)的含义

一个使用这样的等待函数的程序是这样的: #包括 #包括 int main() { int pid,fd[2];整数 n;字符行[20]; 如果(管道(fd)...

回答 3 投票 0

子进程内存泄漏。如何处理子进程中的内存

我正在编写一个终端并使用以下函数来执行命令: 无效execute_input(t_list *节点,字符** envp) { int pid1; int 状态; if (ft_lstsize(节点) &...

回答 1 投票 0

为什么要使用 select() 和 fork() ?

我一直在阅读Socket编程下的select()系统调用,我开始知道使用它而不是fork()的主要目的是; fork() 只能在场景中使用...

回答 0 投票 0

如何在不复制文件句柄的情况下用 C 在 linux 中生成进程

我想在 Linux 上运行命令行并从 C 代码捕获返回值和标准输出。我想从在较大应用程序的后台线程中运行的一些库代码来执行此操作...

回答 0 投票 0

gnu/Linux 上 pthread 和 fork 之间的区别

pthread 和 fork 之间的基本区别是什么? linux 方面 实现差异以及调度如何变化(有变化吗?) 我在两个类似的程序上运行 strace,其中一个

回答 3 投票 0

理解为什么 numpy 在导入时会进行分叉

每当我导入numpy时,即使不使用numpy,也会创建11个子进程(我的CPU有6/12个核心/线程)。这只会发生一小会儿,但每个子进程都会收到对象的副本

回答 1 投票 0

Signal和SIGCHLD,它有什么作用?

我被要求找到这个问题中所有可能的输出: #定义 N 4 整数值 = 9; 无效处理程序(信号){ 值 += 3; 返回; } 诠释主要(){ pid_t pid; 诠释我; 信号(SIGCHLD,处理程序); ...

回答 4 投票 0

在 C 中使用 fork() 的打印行为

我开始学习 fork,但我不明白为什么会打印 4。更具体地说,我不明白子进程何时完成以及父进程何时退出。 #包括 我开始学习 fork,但我不明白为什么会打印 4。更具体地说,我不明白子进程何时完成以及父进程何时退出。 #include <stdio.h> #include <unistd.h> int main() { int i, status; int x =1; for ( i = 0; i < 3; i++) { int pid = fork(); x++; if (pid > 0) { wait(&status); x--; exit(-1); } } printf ("x = %d\n", x); return 0; } 我尝试了一个图表来更好地理解它 你已经创建了一个 fork() 链,其中只有最后一个孩子在 for 循环之后还活着。在每次迭代中,x 增加如下: original process x = 1 | fork() --> child1 | | x++ x++ (x==2) parent fork() --> child2 waits | | for x++ x++ (x==3) child1 child1 fork() --> child3 | waits | | | for x++ x++ (x==4) | child2 child2 | | | waits | | | for | | | child3 | | | | | | | | | | | | printf ("x = %d\n", x); | | | return 0; | | x-- | | exit | x-- | exit x-- exit 初始进程 (670743) 派生一个子进程 (670744),该子进程随后递增它的 x 副本。父母在最终退出之前(其中一个孩子退出后)减少它的x副本并不重要。 在下一次迭代中,第一个孩子现在是具有增量值 x 的副本的父级。它分叉了另一个孩子 (670745)。重复直到最后一个孩子(670746)存在循环并打印x. 我按如下方式修改了您的代码以证明这一点(还缩小了i的范围并消除了status变量,因为您不使用它): #include <stdio.h> #include <stdlib.h> #include <sys/wait.h> #include <unistd.h> int main() { int x = 1; for (int i = 0; i < 3; i++) { printf("pid=%d, x=%d, i=%d\n", getpid(), x, i); int pid = fork(); x++; if (pid > 0) { wait(&(int) { 0 }); x--; exit(-1); } } printf("pid=%d, x=%d\n", getpid(), x); } 这表明它是最后一个打印出来的客户端x: pid=670743, x=1, i=0 pid=670744, x=2, i=1 pid=670745, x=3, i=2 pid=670746, x=4

回答 2 投票 0

ReferenceError: self is not defined in next js while forking child process via custom webpack configuration

我正在尝试在下一个 js 中分叉一个子进程以进行耗时操作。为此,这是我的 webpack 配置 (next.config.js): const { merge } = require('webpack-merge'); 模块.exports = {

回答 0 投票 0

nginx为什么子进程打不开父进程创建的文件

我正在尝试在 nginx 中编写一个插件,我应该在主进程中创建一个文件,然后子进程将读取该文件。我已经在主进程中设置了文件 0766,但是当我打开和 statvfs 失败时...

回答 0 投票 0

Zsh 自动 forkbomb 检测和缓解

我正在尝试编写一个 zsh 脚本来检测并杀死 forkbomb。我知道防止这种情况的最简单方法是在 limits.conf 文件中设置限制,但此分配需要自动

回答 0 投票 0

fork() 系统调用异常执行

我刚刚学习如何在 C 中使用 fork(),但我很难理解执行流程。 代码: #包括 #包括 #包括 诠释主要(){ p...

回答 1 投票 0

C中子进程kill掉后为什么会泄漏内存?

我需要在 (if) 块的末尾终止子进程。但是杀死它会导致内存泄漏 在 ubuntu 终端上试过。 编译:gcc -W -Wall -Wextra mallocFork.c 运行:valgrind ./a.out #

回答 1 投票 0

自定义 shell 多个管道成功,但没有输出到标准输出

我正在创建一个自定义外壳,目前正在努力让多个管道工作。例如,ls -al | wc -l 返回当前目录中所有文件目录的数量。我正在密切关注...

回答 2 投票 0

NodeJS 派生的 Python 进程 - Python 的 process.send() 的替代方案?

我正在用 NodeJS 分叉一个 Python 脚本,当分叉时,默认情况下,NodeJS 会在这个新进程和父进程之间创建一个 IPC。 使用 NodeJS,要将消息从孩子发送到父母,我会处理...

回答 2 投票 0

如何在 powershell 中使用 azure-devops-service-api 创建跨叉的 pr

我想将源代码仓库主服务器中的签到同步到分叉仓库主服务器 我试图创建从源回购主分支到分叉回购主分支的 PR(这是用 Python 完成的解决方案)。小...

回答 0 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.