腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
5
回答
与Windows的CreateProcess相比,
Linux
的分叉功能--什么被复制?
、
、
、
我正在将Windows应用程序移植到
Linux
。我在Windows上使用CreateProcess运行子进程并重定向所有标准流(输入、输出、错误)。主进程很大,
内存
和线程很多,子进程也很小。在
Linux
上,我看到
fork
函数具有与CreateProcess类似的功能。然而,手册说
fork
“创建父进程副本”,包括代码、数据和堆栈。这是否意味着,如果我创建一个使用1GB
内存
的大型进程的副本,只为了运行一个非常简单的命令行工具,它使用1MB的
内存
本身,那么我需要先用
f
浏览 14
提问于2014-02-12
得票数 9
回答已采纳
1
回答
如何在C/
Linux
中不使用system、popen、
fork
、exec执行外部命令?
、
、
我想知道在
Linux
环境中使用C语言执行外部命令的好方法,而不使用system()、popen()、
fork
()、exec()?我不能使用这些功能的原因是我的主要应用程序已经消耗了我的嵌入式板中的大部分系统资源(即
内存
)。如果我做了叉子,董事会将无法创建我的主要应用程序的副本。从我在一本书中读到的资料来看,system()和popen()实际上都在下面使用
fork
(),所以我也不能使用它们。
浏览 10
提问于2013-11-20
得票数 4
回答已采纳
1
回答
python多进程参数:深度复制?
、
、
from multiprocessing import Processp = Process(target = f, args = (c,))我假设将c的深层副本传递给函数f,因为浅层副本在新进程的情况下没有意义(新进程无法访问调用进程的数据)。
浏览 1
提问于2011-05-13
得票数 18
回答已采纳
1
回答
写的副本是如何在分叉执行中工作的?
、
、
、
、
进程
fork
是子进程,并在子进程中调用exec()。在
fork
之后,父进程和子进程共享
内存
.当子进程调用exec()来加载另一个进程时,
Linux
是否会将父
内存
复制到新
内存
,子进程也会加载另一个进程到这个新
内存
?
浏览 0
提问于2015-08-08
得票数 0
1
回答
为什么这个全局计数器在子进程中不递减?
、
、
、
int main() if (
fork
() == 0) { printf("child has spoken!在if中,
fork
()创建了子级,但是作为
fork
() == 0,只有child将counter减少1。现在counter为0,child终止于exit(0)。
浏览 5
提问于2016-03-02
得票数 1
回答已采纳
1
回答
子地址空间是否会影响父地址空间
、
、
、
、
int value = 5; pid_t pid; value +=15; return
浏览 14
提问于2019-06-25
得票数 0
1
回答
在编写进程同步算法(如克隆/派生、信号量)时从哪里开始
、
、
我是不是应该创建一个进程,然后从头开始就把它发送给
fork
?程序只会是一个在父进程/子进程之间来回循环的无限循环吗?如何在C++中创建“共享
内存
”的概念,显式
内存
地址还是某个全局变量?
浏览 0
提问于2010-03-31
得票数 0
1
回答
了解Python
fork
和
内存
分配错误
、
、
我有一个
内存
密集型的Python应用程序(在数百MB到几GB之间)。我有几个非常小的
Linux
可执行文件,主要应用程序需要运行,例如我使用的是
Linux
(Ubuntu 12.10,64位),所以我猜是子进程调用
Fork
。
Fork
派生了我的现有进程,因此消耗的
内存
量增加了一倍,并且失败了?? “写入时复制”是
浏览 2
提问于2013-03-16
得票数 9
1
回答
Redis服务器及其叉()-何时调用vm_enough_memory?
、
、
、
、
我试图了解
fork
()在
Linux
上运行的Redis服务器中是如何工作的,以及Redis将如何生成叉:无法分配
内存
响应。(似乎在/usr/lib/libc.so.6中)调用
fork
():
linux
-vdso.so.1 (0x00007ffde8d930003 执行arch_
fork
宏ret = INL
浏览 1
提问于2019-08-24
得票数 2
回答已采纳
1
回答
来自::popen()的ENOMEM原因
、
、
、
、
popen()的手册页向您推荐了::
fork
()的页面,其中列出了ENOMEM,并提供了关于
Linux
的简短注释: ENOMEM我想知道我是否真的耗尽了
内存
,或者可能是其他一些资源,如文件描述符?
fork
()可以给ENOMEM一些东西,而不是耗尽系统上的实际
内存
吗?这是Centos4。
浏览 7
提问于2011-06-21
得票数 2
回答已采纳
5
回答
使用vfork的双分支
、
、
、
因为我希望等待一些进程,并在不等待完成的情况下分派其他进程,所以我对第二种进程使用了double
fork
(从而避免了僵尸进程)。问题是,我的服务器拥有大量
内存
,所以
fork
需要很长时间(甚至
Linux
中使用的只复制分页表的写入时复制
fork
) 我想用vfork()替换
fork
(),而且第二个
fork
很容易(因为它只在孩子中调用execve() ),但是我找不到任何方法来替换第一个
fork
。服务器是用C++编写的
linux
(RH5
浏览 1
提问于2010-04-11
得票数 3
2
回答
在
Linux
上,有哪些条件可能导致
fork
()或system()调用失败?
、
、
、
如何才能发现其中的任何一个正在发生,并导致由
fork
()或system()返回的错误?换句话说,如果
fork
()或system()返回一个错误,那么我可以在
Linux
中检查哪些东西来诊断为什么会发生特定的错误?例如: 只是
内存
不足(导致errno ENOMEM) -检查
内存
使用“空闲”等。没有足够的
内存
来复制父进程的页表和其他记帐信息,有全局进程限制吗?(结果也是EAGAIN?)是否有每个用户的进程限制?
浏览 5
提问于2009-05-12
得票数 7
1
回答
我能用一个过程中的PTEs来表示物理记忆的片段,在另一个过程中创建合适的PTEs吗?
、
、
、
、
当我们在
Linux
中使用函数mmap (,,, MAP_ANON | MAP_SHARED);时,对于同一区域的物理
内存
(在进程之间分配的)是分配虚拟
内存
页(PTEs)。这些PTE从一个进程的页表复制到另一个进程的页表(具有相同的物理地址分配
内存
片段序列),这是真的吗? 但是mmap ()需要在
fork
()之前完成。如果我们已经有了两个工作过程(即
fork
()之后),那么我们需要为mmap()使用一个文件。哪些函数用于在两个已经建立的进程之间复制PTE的机制以创建共享
内存</
浏览 1
提问于2013-12-01
得票数 1
1
回答
防止
fork
()复制进程的
内存
映射(mmap‘’ed)
、
、
、
、
我有一个实现mmap操作集(vm_operations)的
Linux
设备驱动程序,以及一个使用mmap调用映射设备驱动程序
内存
空间的进程。我希望避免这些重复,并实际上使所有的
内存
映射私有到父程序。 这在
Linux
上是可能的吗?
浏览 5
提问于2015-03-29
得票数 0
5
回答
叉子()是否是一种稳定的公开行为,可用于实现只读共享
内存
?
、
fork
()上的手册页声明它不复制数据页,它将它们映射到子进程中,并放置一个副本上写标志。这种行为是: 考虑到一个实现细节,因此很可能会改变?我想知道我是否可以使用
fork
()作为一种廉价获得共享只读
内存
块的方法。如果
内存
是物理复制的,它将是相当昂贵的-有很多分叉,而且数据区域足够大-但我希望不是.
浏览 22
提问于2010-09-08
得票数 4
回答已采纳
1
回答
根据可用的空闲
内存
控制有多少子进程分叉
、
、
我试图在
Linux
系统
内存
允许的情况下,尽可能多地利用母牛和叉子进程。我会启动父进程,直到分叉部分(此时进程正在使用一定数量的
内存
),然后每次分叉一个子进程,直到
fork
返回ENOMEM错误为止。子进程将不会分配任何新的
内存
,而只是工作。但是这不起作用,我所有的进程都被
Linux
系统杀死了,没有任何
内存
错误。 做这件事最好的方法是什么?
浏览 8
提问于2014-03-05
得票数 0
回答已采纳
2
回答
不建议在分叉时执行外部程序
、
、
我有一个大型服务器软件,可以占用4-8GB
内存
。 这就使得叉-exec变得很麻烦,因为叉子本身需要很长时间,而且默认的行为似乎是那个叉会失败,除非有足够的
内存
来复制整个驻留
内存
。
浏览 0
提问于2015-07-16
得票数 1
回答已采纳
1
回答
Ruby:无法分配
内存
、
、
当我运行如下命令时:它将失败,并显示 config.vm.provider "virtualbox" do |vb| end我读到过当
内存
超出限制时会出现这样的错误
浏览 1
提问于2015-02-03
得票数 12
回答已采纳
2
回答
查找哪些页面不再与“复制即写”共享。
、
、
、
、
假设我在
Linux
中有一个进程,我从其中
fork
()另一个相同的进程。在
Linux
之后,由于最初的进程将开始写入
内存
,所以
Linux
的即插即用机制将给出不同于分叉进程使用的进程独特的物理
内存
页。
浏览 5
提问于2012-04-23
得票数 4
3
回答
redis bgsave失败,因为
fork
无法分配
内存
、
、
all:这是我的服务器
内存
信息和'free -m‘ Swap: 8197 184 8012据我所知,
fork
是写时拷贝,当有15G的空闲
内存
时,它
浏览 2
提问于2012-08-01
得票数 54
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
fork系统调用理解
图解|Linux内存碎片整理
Linux内存映射mmap原理分析
怎样将github自己fork的仓库与fork原仓库保持同步
解读 Linux 内存管理新特性 Memory folios
热门
标签
更多标签
云服务器
ICP备案
云直播
对象存储
腾讯会议
活动推荐
运营活动
广告
关闭
领券