fork 相关问题

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

执行 fork 调用会为 Linux 提供退出状态 0x3

操作系统:Windows 11 CP:海湾合作委员会11.4.0 硬件:英特尔 我有一个从 shell 程序中提取的示例。我正在尝试执行多个由 & '分隔'的程序。给定一个固定数组

回答 1 投票 0

C 中的多进程

我是C语言新手。我最近遇到了用 fork() 函数在 C 中进行多重处理,该函数是在单个主 C 程序中编写的。 我想知道是否可以有多个

回答 1 投票 0

分叉的子进程使用相同的信号量吗?

假设我创建了一个信号量。如果我分叉了一堆子进程,它们仍然会使用相同的信号量吗? 另外,假设我创建一个内部有信号量并分叉的结构。做所有的事情...

回答 3 投票 0

运行 bash 的子进程在执行终端窗口上打印 ssh 登录提示符,而不是通过管道输入的代码,我不知道为什么

我正在用 C 语言为老式串行终端编写一个兼容层。它不支持正常的 ANSI 转义序列等,所以我使用一个程序作为 bash 和 te 之间的中间人...

回答 1 投票 0

仅从 Github 存储库分叉特定分支

假设有一个名为 O 的官方仓库,分支为 B1、B2 和 B3。 一位用户将其分叉到他的 Github 帐户上,并为自己创建了另一个名为 B4 的分支,并公开了

回答 4 投票 0

(GitHub) 我可以将父项目的拉取请求应用到分支吗?

一名模组制作者向一个废弃的 Github 项目提交了拉取请求;由于原始开发商是 MIA,因此永远不会被接受。 是否有可能分叉废弃的项目,然后以某种方式得到......

回答 2 投票 0

C 程序中的分叉导致父打印输出重复

我在理解这个程序的输出时遇到了一些困难。运行该程序后,输出最终为“0Yo!1Yo!Yo!2Yo!Yo!Yo!3Yo!Yo!Yo!Yo!4Yo!Yo!Yo!Yo!Yo!5Yo!Yo!Yo!Yo!Yo! 5英寸...

回答 1 投票 0

在C++中实现管道命令时,我无法在子进程中使用`dup2`将输入从管道重定向到STDIN_FILENO

我想在shell中实现管道命令,例如ls |猫 |厕所。这是我的管道命令实现。 我使用管道来存储每个命令生成的结果。对于每个子进程,它: ...

回答 1 投票 0

如何控制mclapply引起的潜在fork炸弹,尝试过ulimit但没有用

我在 R 脚本中使用 mclapply 进行并行计算。它节省了总体内存使用量并且速度很快,因此我想将其保留在我的脚本中。然而,我注意到的一件事是孩子的数量

回答 1 投票 0

如何使用 EXPECT_DEBUG_DEATH Google 测试宏抑制 Valgrind 检测到的问题?

我遇到了 Google 单元测试框架和 valgrind 交互的问题。当我使用 EXPECT_DEBUG_DEATH 宏和 memcheck 使用 valgrind 测试代码时,我得到大量日志输出。 valgrind --e...

回答 1 投票 0

在父进程中处理 Fork 失败时的 SIGTERM - 资源清理问题

我的多进程应用程序遇到问题,其中主进程创建子进程,并且每个子进程进一步分叉。如果达到分叉的系统限制,则...

回答 1 投票 0

在简单的 shell 程序中实现命令管道的问题

我正在用 C 语言编写一个非常简单的类似 bash 的 shell,目前正在命令之间实现管道(即 command1 | command2,它应该使用...的标准输出同时运行这两个命令)

回答 1 投票 0

使用管道跨子进程通信

我的任务是用 c 创建我自己的 shell。我将使用 fork()、pipe()、exec() 和 wait() 来实现此目的。我有一个良好的开端,但我对管道的研究越多,我就越困惑。

回答 1 投票 0

C 子进程运行其代码两次

这里是 C 新手,正在寻求有关 fork() 的帮助。我不知道为什么它会打印子进程 2 代码两次。我相信这与睡眠呼叫有关,因为它之前工作正常。 输出...

回答 1 投票 0

Gradle 的内置任务 JavaExec 总是在 fork 中运行 Java mainClass(即新的 Jvm 进程)?

标题正确吗? 如果我执行 JPS,我可以将 Java 应用程序视为单独的进程 如果我是正确的,那么 JavaExec 中是否没有配置来在同一个 Gradle Daemon 进程中运行应用程序......

回答 1 投票 0

C 程序中 fork() 和消息队列通信的问题

在我的程序中,当进程从消息队列接收到消息“ON”时,我尝试分叉一个进程。在引入分叉之前,消息可以正常工作: 而 (1) {

回答 1 投票 0

为什么我的编译器不接受 fork(),尽管我包含了 <unistd.h>?

这是我的代码(只是为了测试 fork() 而创建): #包括 #包括 #包括 #包括 #包括 #包括 这是我的代码(只是为了测试 fork() 而创建): #include <stdio.h> #include <ctype.h> #include <limits.h> #include <string.h> #include <stdlib.h> #include <unistd.h> int main() { int pid; pid=fork(); if (pid==0) { printf("I am the child\n"); printf("my pid=%d\n", getpid()); } return 0; } 我收到以下警告: warning: implicit declaration of function 'fork' undefined reference to 'fork' 有什么问题吗? unistd.h 和 fork 是 POSIX 标准的一部分。它们在 Windows 上不可用(gcc 命令中的 text.exe 提示您不在 *nix 上)。 看起来您正在使用 gcc 作为 MinGW 的一部分,它确实提供了 unistd.h 标头,但没有实现像 fork 这样的功能。 Cygwin 确实提供了fork等功能的实现。 但是,由于这是家庭作业,您应该已经了解如何获得工作环境的说明。 您已获得 #include <unistd.h>,这是声明 fork() 的地方。 因此,您可能需要告诉系统在包含系统标头之前显示 POSIX 定义: #define _XOPEN_SOURCE 600 如果您认为您的系统大部分符合 POSIX 2008,则可以使用 700,对于较旧的系统甚至可以使用 500。因为 fork() 一直存在,所以它会与其中任何一个一起出现。 如果您使用 -std=c99 --pedantic 进行编译,则 POSIX 的所有声明都将被隐藏,除非您明确请求它们,如图所示。 您还可以使用 _POSIX_C_SOURCE,但使用 _XOPEN_SOURCE 意味着正确对应的 _POSIX_C_SOURCE(以及 _POSIX_SOURCE,等等)。 正如您已经注意到的,fork() 应该在 unistd.h 中定义 - 至少根据 Ubuntu 11.10 附带的手册页。最小的: #include <unistd.h> int main( int argc, char* argv[]) { pid_t procID; procID = fork(); return procID; } ...在 11.10 上构建时没有任何警告。 说到这里,您使用的是哪个 UNIX/Linux 发行版?例如,我发现一些应该在 Ubuntu 11.10 的标头中定义的不起眼的函数却没有。如: // string.h char* strtok_r( char* str, const char* delim, char** saveptr); char* strdup( const char* const qString); // stdio.h int fileno( FILE* stream); // time.h int nanosleep( const struct timespec* req, struct timespec* rem); // unistd.h int getopt( int argc, char* const argv[], const char* optstring); extern int opterr; int usleep( unsigned int usec); 只要它们在您的 C 库中定义,就不会是一个大问题。只需在兼容性标头中定义您自己的原型,并将标准标头问题报告给维护您的操作系统发行版的人员即可。 我认为你必须执行以下操作: pid_t pid = fork(); 要了解有关 Linux API 的更多信息,请访问 此在线手册页,或者甚至立即进入终端并键入, man fork 祝你好运! 只需在Linux虚拟机中运行程序,我的就在那里工作。 Windows 太糟糕了!

回答 5 投票 0

在 C 中使用 fork()

我正在编写一个使用CPU能力来处理一些信息的程序。该程序取决于 CPU 内核。如果有 2 个核心,程序将 fork() 两次以创建 2 个世界实例...

回答 3 投票 0

为什么当fork()的父进程在fork之前放入队列时,multiprocessing.Queue会卡住?

我最近写了这个程序: 导入操作系统、时间 从多处理导入队列 q = 队列(1000) q.put(1) # 第 6 行 结果 = os.fork() 如果结果==0: 而真实: q.put(2) ...

回答 1 投票 0

从curses进程分叉交互式程序会导致键盘干扰

从curses界面,用户可以分叉feh实例来查看图像。 curses 界面具有 hjkl 导航,在查看图像时不应阻止该导航。 无效显示文件(无效){

回答 1 投票 0

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