社区
Linux_Kernel
帖子详情
一个关于进程和线程的问题
tgvlcw
2012-03-10 01:17:12
有一个进程,其中创建了3个线程,然后该进程用exec函数运行了其它进程,那么原进程中的线程的资源系统会回收吗?比如说:打开的文件 描述符,内存等?
...全文
206
6
打赏
收藏
一个关于进程和线程的问题
有一个进程,其中创建了3个线程,然后该进程用exec函数运行了其它进程,那么原进程中的线程的资源系统会回收吗?比如说:打开的文件 描述符,内存等?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
justkk
2012-03-11
打赏
举报
回复
exec之后,感觉原进程通过malloc()申请的内存会释放,在新进程中不再可用
tgvlcw
2012-03-11
打赏
举报
回复
fcntl(enable_fp, F_SETFD, FD_CLOEXEC);
使用这个函数就可以实现了。
还有几个问题:
1,在A进程中创建了3个线程,这是A进程使用exec去执行其它程序之后,那么A进程中的3个线程是怎么处理的呢?
2,在A进程中的线程a中打开了一个文件,并且使用F_DUPFD_CLOEXEC设置文件描述符,然后进程A用exec去执行其它进程之后,怎么在其它进程中使用这个描述符呢?
nossiac
2012-03-10
打赏
举报
回复
程中的线程的资源系统会回收吗?比如说:打开的文件 描述符,内存等?
不会。
新进程在fork的时候复制了原进程环境,并且是copy on write的。
到你exec时,新进程会执行另一个程序,与原进程分道扬镳了。
quwei197874
2012-03-10
打赏
举报
回复
不会的
jsy5211
2012-03-10
打赏
举报
回复
当进程调用exec函数执行一个程序时,该进程执行的程序完全替换为新程序,而新程序则从其main函数开始执行。因为调用exec并不创建新进程,所以前后的进程id并未改变。exec只是用全新的程序替换了当前进程的正文、数据、堆和栈。对于文件描述符都有个执行时关闭标记,如果打开文件时设置过,则执行exec时,该文件会自动关闭,否则此描述符还继续打开,除非通过fcntl设置该标记,否则系统默认是在执行exec后仍保持打开。具体可参考unix环境高级编程
进程
和
线程
关系及区别
1.定义
进程
是具有一定独立功能的程序关于某个数据集合上的一次运行活动,
进程
是系统进行资源分配和调度的
一个
独立单位.
线程
是
进程
的
一个
实体,是CPU调度和分派的基本单位,它是比
进程
更小的能独立运行的基本单位.
线程
自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属
一个
进程
的其他的
线程
共享
进程
所拥有的全部资源. 2.关系
进程
和
线程
的主要区别(总结)
根本区别:
进程
是操作系统资源分配的基本单位,而
线程
是任务调度和执行的基本单位在开销方面:每个
进程
都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;
线程
可以看做轻量级的
进程
,同一类
线程
共享代码和数据空间,每个
线程
都有自己独立的运行栈和程序计数器(PC),
线程
之间切换的开销小。所处环境:在操作系统中能同时运行多个
进程
(程序);而在同
一个
进程
(程序)中有多个
线程
同时执行(通过CPU调...
线程
与
进程
,你真得理解了吗
相信大家面试时一定没少被
一个
问题
刁难,那就是
进程
和
线程
的区别是什么?这个
问题
延申开来并不像表面那么简单,今天就来深入一探。 开始前先看一组非常传神的图例,相信可以帮助你更好理解
进程
与
线程
的概念: 1
进程
与
线程
的关系和区别 什么是
进程
进程
可以说是
一个
“执行中的程序”。程序是指令、数据及其组织形式的描述,是
一个
没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为
一个
活动的实体,我们称其为
进程
。
进程
有哪些特征?
进程
依赖于程序运行而存在,
进程
是动态的,程序是静态的;
进程
是操作系统进行
线程
和
进程
有什么区别(简单介绍)
线程
和
进程
有什么区别(简单介绍) 简单介绍 一、
线程
的基本概念
线程
是
进程
中执行运算的最小单位,是
进程
中的
一个
实体,是被系统独立调度和分派的基本单位,
线程
自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属
一个
进程
的其它
线程
共享
进程
所拥有的全部资源。
一个
线程
可以创建和撤消另
一个
线程
,同一
进程
中的多个
线程
之间可以并发执行。 ...
java的
进程
和
线程
_java
进程
和
线程
区别与不同
java
进程
和
线程
区别与不同。一、定义1.
进程
是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的
一个
独立单位。2.
线程
是
进程
的
一个
实体,是CPU调度和分派的基本单位,他是比
进程
更小的能独立运行的基本单位,
线程
自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),
一个
线程
可以创建和撤销另
一个
线程
;
进程
和
线程
的关系:(1)
一个
线程
...
Linux_Kernel
4,469
社区成员
17,459
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章