社区
Linux_Kernel
帖子详情
一个关于进程和线程的问题
tgvlcw
2012-03-10 01:17:12
有一个进程,其中创建了3个线程,然后该进程用exec函数运行了其它进程,那么原进程中的线程的资源系统会回收吗?比如说:打开的文件 描述符,内存等?
...全文
218
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环境高级编程
关于
进程
和
线程
以及句柄
关于
进程
和
线程
以及句柄
进程
和
线程
一、
进程
和
线程
进程
是程序执行时的
一个
实例,即它是程序已经执行到何种程度的数据结构的汇集。从内核的观点看,
进程
的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。
线程
是
进程
的
一个
执行流,是CPU调度和分派的基本单位,它是比
进程
更小的能独立运行的基本单位。
一个
进程
由几个
线程
组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构)
线程
与同属
一个
进程
的其他的
线程
共享
进程
所拥有的全部资源。 “
进程
——资源分配的最小单位,
线程
——程序执行的最小单位”
进程
有独立的地址空间,
一个
进程
崩溃
进程
和
线程
合集以及实例
文章目录
进程
和
线程
0.1 粗略介绍:0.2
线程
进程
区别:一.
进程
1.1 fork创建单
进程
1.2 multiprocessing:Process 创建子
进程
1.2 multiprocessing:Pool 创建
进程
池1.3
进程
间通信 公共队列二.
线程
2.1 多
线程
的优点:二.
线程
2.1 创建
线程
threading.Thread
进程
和
线程
0.1 粗略介绍: 举例: 运行QQ, 需要有的
进程
(1)等待对方消息 (2)等待用户输入 (3)验证身份 (4)更新好友状态 计算机上的并行现象: 对于
进程
和
线程
的区别与联系
一个
线程
是
一个
“执行流”,每个
线程
之间都可以按照顺序执行自己的代码,多个
线程
“同时”执行多份代码。4.多个
进程
同时执行时,如果
一个
进程
崩溃,一般不会影响其他
进程
,而同一
进程
内的多个
线程
之间,如果
一个
线程
崩溃,很可能使得整个
进程
崩溃。每个
进程
都有独立的虚拟地址空间,也有之间独立的文件描述符表,同一
进程
的多个
线程
之间则共用这一份虚拟地址空间和文件描述符表。3.
进程
是操作系统中资源分配的基本单位,
线程
是操作系统中调度执行的基本单位。2.
进程
之间的资源是独立的,
线程
之间的资源则是共享的。...
浏览器的
进程
和
线程
浏览器的工作原理 1、浏览器的
进程
与
线程
1.1、并行处理 并行处理就是同一时刻处理多个任务 1.2、
进程
与
线程
从本质上说,
进程
和
线程
都是 CPU 工作时间片的
一个
描述:
进程
描述了 CPU 在运行指令及加载和保存上下文所需的时间,放在应用上来说就代 表了
一个
程序。
线程
是
进程
中的更小单位,描述了执行一段指令所需的时间。
一个
进程
就是
一个
程序的运行实例。详细解释就是,启动
一个
程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和
一个
执行任务的主
线程
,我们把这样的
一个
运行环境叫
进程
。
Linux_Kernel
4,468
社区成员
17,459
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章