社区
Linux_Kernel
帖子详情
一个关于进程和线程的问题
tgvlcw
2012-03-10 01:17:12
有一个进程,其中创建了3个线程,然后该进程用exec函数运行了其它进程,那么原进程中的线程的资源系统会回收吗?比如说:打开的文件 描述符,内存等?
...全文
171
6
打赏
收藏
一个关于进程和线程的问题
有一个进程,其中创建了3个线程,然后该进程用exec函数运行了其它进程,那么原进程中的线程的资源系统会回收吗?比如说:打开的文件 描述符,内存等?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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环境高级编程
进程
和
线程
的主要区别(总结)
根本区别:
进程
是操作系统资源分配的基本单位,而
线程
是任务调度和执行的基本单位在开销方面:每个
进程
都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;
线程
可以看做轻量级的
进程
,同一类
线程
共享代码和数据空间,每个
线程
都有自己独立的运行栈和程序计数器(PC),
线程
之间切换的开销小。所处环境:在操作系统中能同时运行多个
进程
(程序);而在同
一个
进程
(程序)中有多个
线程
同时执行(通过CPU调...
面试常问——
进程
和
线程
的区别
最近学习到了Java的多
线程
部分,了解到了
进程
和
线程
的相关概念,下面我们来介绍一下
进程
和
线程
吧。 目录 一、
进程
二、
线程
三、
进程
VS
线程
一、
进程
进程
是操作系统资源分配的最小单元。
一个
进程
拥有的资源有⾃⼰的堆、栈、虚存空间(页表)、文件描述符等信息。 从编程的角度来理解
进程
,可以把它看作是⼀个类或
一个
PCB (Process Control Block)
进程
控制块的结构体。
进程
是操作系统对
一个
正在运行的程序的一种抽象,可以把
进程
看作程序运行的一次运行过程。 程序VS
进程
:
java的
进程
和
线程
_java
进程
和
线程
区别与不同
java
进程
和
线程
区别与不同。一、定义1.
进程
是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的
一个
独立单位。2.
线程
是
进程
的
一个
实体,是CPU调度和分派的基本单位,他是比
进程
更小的能独立运行的基本单位,
线程
自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),
一个
线程
可以创建和撤销另
一个
线程
;
进程
和
线程
的关系:(1)
一个
线程
...
进程
和
线程
的区别
转自文章
进程
和
线程
的区别 1、根本区别
进程
和
线程
的根本区别是
进程
是操作系统资源(OS)分配的基本单位,而
线程
是处理器(CPU)任务调度和执行的基本单位。 2、资源开销: 每个
进程
都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;
线程
可以看做轻量级的
进程
,同一类
线程
共享代码和数据空间,每个
线程
都有自己独立的运行栈和程序计数器(PC),
线程
之间切换的开销小。 3、包含关系: 如果
一个
进程
内有多个
线程
,则执行过程不是一条线的,而是多条线 同完成的;
线程
是
进程
的一部分,所行过程不愿一条绿的,而
关于
进程
和
线程
以及句柄
说法一:
进程
是具有一定独立功能的程序关于某个数据集合上的一次运行活动,
进程
是系统进行资源分配和调度的
一个
独立单位.
线程
是
进程
的
一个
实体,是CPU调度和分派的基本单位,它是比
进程
更小的能独立运行的基本单位.
线程
自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属
一个
进程
的其他的
线程
共享
进程
所拥有的全部资源.
一个
线程
可以创建和撤销另
一个
线程
;同
一个
进程
中的多个
线程
之间可以并发执行 说法二:
进程
和
线程
都是由操作系统所体会的程序运行的基本单元,系统利用该基本
Linux_Kernel
4,466
社区成员
17,461
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章