linux+kill+进程和线程,在LINUX系统中 关于进程和线程终止的问题
#include
#include
pthread_t thread;
void *fun(void *arg)
{
printf("hell0n");
pthread_exit((void * 1));
}
int main(void)
{
pthread_create(&thread,NULL,fun,NULL);
sleep(1);
return 127;
}
在UNIX环境高级编程中说 进程的最后一个线程在启动例程中 执行返回语句,该进程正常终止,但是,该线程的返回值不会用作进程的返回值,当最后一个线程从其启动例程返回时,该进程以终止状态0返回
问题1:请问什么是启动例程?是main函数吗?
问题2:最后一个线程是指什么?是主线程吗?是不是上面那个调用 pthread_create 函数的线程?如果是的话,这个线程跟进程有什么区别,根据书上说,最后一个线程在启动例程里执行返回语句,进程终止,但是线程的返回值不会作为进程的返回值,我这里有弄不明白了,我上面这个程序的 最后一个线程是主线程 它在main函数中执行return 127;进程终止,根据书上说进程的退出状态应该是0 才对,但是我用 echo $? 来查看进程的退出状态 却是 127 。
请各位高手指点,书上所说的最后一个线程是指什么?最后一个线程的返回值和进程的返回区别在那里,是不是在main函数中执行的return 语句 不是线程的返回语句,而是进程的返回语句。如果是进程的返回语句,那如果要让最后一个线程在启动例程里执行返回语句 用什么方法执行呢?
|
启动例程翻译得不准确
main函数是启动例程,void *fun(void *arg) 也是函数例程
就是指进程或线程的执行主体
最后一个线程就是最后一个结束的线程,例子中主线程sleep(1);所以它最后结束。没有sleep(1);,那谁先结束就不能确定了
线程的返回值是 pthread_exit((void * 1)); 传递的
return 传递的是进程的返回值
|
根据书上说进程的退出状态应该是0 才对,但是我用 echo $? 来查看进程的退出状态 却是 127
那是因为你程序退出的时候搞了个返回值return 127
在linux下的程序一般都是正常结束返回0或者以0的状态退出 程序异常或者错误才以非0的值退出 我看了一些源码大概都是这样的规则
最后一个进程 从字面上来看就是最后一个退出的进程 建议楼主在读外文著作的时候不要只读翻译过来的东西 应该下个原版 在某些概念有疑问的时候 去原版的地方看看
|
1、启动例程就是你的线程实际执行的函数体代码,在这里也就是你的>fun()
2、进程的最后一个线程就是在进程执行完之前最晚结束的那个线程。但是你这里进程只开了一个线程,所以最后一个线程就是你开的那个线程>thread了。
据我理解,线程的返回值是线程执行的一种状态,不知道是不是正确。
|
是
|
在UNIX环境高级编程中说 进程的最后一个线程在启动例程中 执行返回语句,该进程正常终止,但是,该线程的返回值不会用作进程的返回值,当最后一个线程从其启动例程返回时,该进程以终止状态0返回
问题1:请问什么是启动例程?是main函数吗?
意思就是指执行该线程代码的进程段。
问题2:最后一个线程是指什么?是主线程吗?是不是上面那个调用 pthread_create 函数的线程?如果是的话,这个线程跟进程有什么区别,根据书上说,最后一个线程在启动例程里执行返回语句,进程终止,但是线程的返回值不会作为进程的返回值,我这里有弄不明白了,我上面这个程序的 最后一个线程是主线程 它在main函数中执行return 127;进程终止,根据书上说进程的退出状态应该是0 才对,但是我用 echo $? 来查看进程的退出状态 却是 127 。
一个进程下可以创建多个线程,最后一个退出的子线程就是最后一个线程啊。
至于你说的返回值,要清楚,线程返回值通过pthread_exit实现,return就是进程返回。
请各位高手指点,书上所说的最后一个线程是指什么?最后一个线程的返回值和进程的返回区别在那里,是不是在main函数中执行的return 语句 不是线程的返回语句,而是进程的返回语句。如果是进程的返回语句,那如果要让最后一个线程在启动例程里执行返回语句 用什么方法执行呢?
linux+kill+进程和线程,在LINUX系统中 关于进程和线程终止的问题相关推荐
- Linux系统中的进程管理
Linux系统中的进程管理 了解进程 进程是已启动的可执行程序的运行实例,进程有以下组成部分: • 已分配内存的地址空间: • 安全属性,包括所有权凭据和特权: • 程序代码的一个或多个执行线程: • ...
- 管理Linux系统中的进程
1.什么是进程? (1)进程与程序 在Linux系统当中,触发任何一个事件时,系统都会将它定义成为一个进程,并且给予这个进程一个ID,称为PID,同时依据启发这个进程的用户与相关属性关系,给予 ...
- 搞它!!!Linux系统中查看进程和计划任务管理
文章目录 首先我们了解一下程序和进程的关系: 一.查看进程 1.查看静态的进程统计信息(ps) 2.查看静态的进程统计信息(top) 3.pgrep命令(查询进程信息) 4.pstree命令(查看进程 ...
- Linux系统中查看进程和计划任务管理
各位小伙伴们大家好,本次给大家带来的是Linux操作系统中的进程和计划任务的管理,首先大家都知道程序是保存在外部存储介质(如硬盘.光盘)中的可执行机器代码和数据的静态集合,而进程是在CPU及内存中 ...
- linux mysql 僵尸进程_Linux 系统中僵尸进程
Linux 系统中僵尸进程和现实中僵尸(虽然我也没见过)类似,虽然已经死了,但是由于没人给它们收尸,还能四处走动.僵尸进程指的是那些虽然已经终止的进程,但仍然保留一些信息,等待其父进程为其收尸. 僵尸 ...
- linux java 僵尸进程_Linux 系统中僵尸进程
Linux 系统中僵尸进程和现实中僵尸(虽然我也没见过)类似,虽然已经死了,但是由于没人给它们收尸,还能四处走动.僵尸进程指的是那些虽然已经终止的进程,但仍然保留一些信息,等待其父进程为其收尸.配图源 ...
- Android系统中的进程管理:内存的回收
本文是Android系统进程管理的第三篇文章.进程管理的前面两篇文章,请参见这里: Android系统中的进程管理:进程的创建 Android系统中的进程管理:进程的优先级 本文适合Android平台 ...
- Android系统中的进程管理:进程的创建
对于操作系统来说,进程管理是其最重要的职责之一. 考虑到这部分的内容较多,因此会拆分成几篇文章来讲解. 本文是进程管理系统文章的第一篇,会讲解Android系统中的进程创建. 本文适合Android平 ...
- Android系统中的进程管理:进程的优先级
本文是Android进程管理系列文章的第二篇,会讲解进程管理中的优先级管理. 进程管理的第一篇文章:<进程的创建>请跳转至这里. 本文适合Android平台的应用程序开发者,也适合对于An ...
- Windows系统中查看进程、及杀死进程的相关命令
netstat 查看所有进程和端口号 netstat -ano 查看指定端口的程序是否被占用 netstat -ano | findstr "8080" tasklist 查看 ...
最新文章
- NLPer,是时候重视因果推理了!这有一份杨笛一等撰写的综述
- python入门到实践-一本书搞定Python入门到实践
- Mysql遇到Too many connections的解决办法
- Java NIO之套接字通道
- Python小游戏(并夕夕版飞机大战)
- 【经典回放】多种语言系列数据结构算法:二叉树(C#版)
- 实数历史无穷小能否带领我们直接走向今日科学之辉煌?
- 城市大数据的生态模型及应用
- 安装Windows7出现:”安装程序无法创建新的系统分区 也无法定位系统分区“ 终极解决方案...
- Hibernate-04-实体编写规范
- Java基础学习总结(113)——异常最佳实践
- 软件测试—软件测试基础知识—(五)软件测试模型
- 前端也能玩转机器学习?Google Brain 工程师来支招!
- python中哈希是什么意思_python 中倒是什么事可哈希的意思那?
- Switch / Xbox / PS / PSV / PSP 游戏指南
- Matlab颜色对照(RGB三元组、十六进制表示)
- linux stubs 32.h,解决 error: gnu/stubs-32.h: No such file or directory
- 【附源码】计算机毕业设计java学生网上请假系统设计与实现
- 存放在电脑中的文件丢失了怎么恢复
- 初读YOLOv1算法
热门文章
- mysql表在线转成分区表_11g普通表在线转换分区表
- ORA-04063: view DAILY.TMP_TBX_100_0_S4 有错误
- internal java compiler error_Java异常处理总结
- 执行 link.exe 时出错_在20多岁时应该做什么,以避免在30多岁和40多岁时后悔?...
- Java语言所有异常类均继承自_Java将运行错误分为两类:(__)和(__), 其对应的类均派生自(__)类;...
- treeset java_Java TreeSet add()方法与示例
- JavaScript | 演示函数中按值调用的示例
- Java LinkedList公共对象pollLast()方法(带示例)
- ctype函数_PHP ctype_cntrl()函数与示例
- android 动态contextmenu,在Android中使用ContextMenu与ListView