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 语句 不是线程的返回语句,而是进程的返回语句。如果是进程的返回语句,那如果要让最后一个线程在启动例程里执行返回语句 用什么方法执行呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Macbook Pro 201 装Win10 声卡_苹果电脑真那么耐用吗?我拿五年前的Mac试了试-苹果,MacBook ——快科技(驱动之家旗下媒体)-...

平时对电脑关注比较多的小伙伴们应该知道,一直以来,同样硬件配置下的苹果电脑通常会比其它品牌的笔记本电脑要贵上不少。别问( 为什么 ),问就是它做工优秀、经久耐用。话虽然是这么说没错,但托尼仔细想想网上这个说法好像又有点问…

linux一个vlan配置多个端口映射,Linux 设置 多ip,多vlan

引:在Linux下有时候需要给一个网卡绑定多个IP,本文介绍在Redhat系列(redhat,Fedora Core,Centos)中的实现方法和一种在Gentoo等其他Linux中普遍适用的方法。在Linux下有时候需要给一个网卡绑定多个IP,本文介绍在Redhat系列(redhat,Fedora Core,Centos)中…

teamviewer一直验证账户_苹果手机下载软件一直需要验证

用过苹果手机的朋友可能都会遇到一种情况,那就是在App Store下载应用的时候,偶尔会弹出需要验证手机的窗口,但是我们按照系统要求给绑定的手机号发送了短信以后却没有任何反应了,遇到这种情况应该如何解决呢?接下来我就…

200 switching to ascii mode_【图片】15005377957 三轮车载式液压打井机XYC-200A 型深水井钻机游走乡【地勘吧】...

巨匠集团长期坚持以客户为基本,不断采纳客户所提出的意见和建议,不断更新自己的产品,让您用到质量过硬,操作简单的产品。巨匠集团,坚持做您身边的钻机帮手。一、XYC-200A三轮车载水井钻机适应范围地质普查勘探&#xf…

linux ps 显示不了中文,enscript转txt为ps文件时中文变成乱码

英文正常,看了下enscipit的help,没看见关于gbk编码的选项-X name, --encodingnameUse the input encoding name. Currently enscript supports the following encodings:88591, latin1ISO-8859-1 (ISO Latin1) (enscripts default encoding).88592, lat…

c++用一级运算比较大小_16.初中数学:怎么比较a、b、c、d的大小?幂的运算,基础常见考题...

欢迎您来到方老师数学课堂,请点击上方蓝色字体,关注方老师数学课堂。所有的视频内容,全部免费,请大家放心关注,放心订阅。初中数学:怎么比较a、b、c、d的大小?幂的运算,基础常见考题…

suse linux 11 HBA信息,HP BL660 GEN8 SUSE 11 查询HBA信息 驱动版本 固件版本 设备名称

测试环境为HP BL660 GEN8SUSE 11 SP4rootlocalhost:/root#lspci |grep -i fibrerootlocalhost:/root#lspci -v -s 06:00.0rootlocalhost:/root#modinfo lpfcrootlocalhost:/root#cat /sys/class/fc_host/host0/symbolic_name //查询HBA卡的型号、固件、驱动rootloc…

php 谷歌翻译api_武汉武昌区地质勘测翻译公司-译嘉合翻译

Angie就结合自己的经验来给大家谈谈如何构建自己的翻译领域吧,相信不管是刚入门急于寻找翻译赛道的新手,还是希望在原有基础上拓宽翻译领域、获得更多合作机会的译员都能带来帮助。地质勘测翻译公司" />鉴于你非英语或翻译专业,要直接…

建立a8 linux开发环境,Fedora 14下建立 omap3530 开发环境 - 交叉编译器

主机升级到Fedora 14,下载了crosstool-ng-1.10.0,编译目标为 arm-cortex_a8编译步骤:1、直接拷贝 crosstool-ng-1.10.0/samples/arm-cortex_a8-linux-gnueabi/crosstool.config 到目标目录中的 .config2、执行 ct-ng menuconfig 查看和校验编…

python开发上位机软件-UR机器人通信--上位机通信(python)

一、通信socket socket()函数 Python 中,我们用 socket()函数来创建套接字,语法格式如下: socket.socket([family[, type[, proto]]]) 参数 family: 套接字家族可以使AF_UNIX或者AF_INET type: 套接字类型可以根据是面…

linux批量部署war工具,Linux 批量一键部署工具 Expect

Linux 批量一键部署工具 Expect既然没有遇到过,做好准备总是好的。这是自己送给自己的话,现在运维做自动话越来越多,自己就学以下,记录笔记。目前主流的有puppet、Expect、pssh等等,今天就用Expect做自动部署和日常管理…

arm b bl 地址无关码_32位和64位下的arm_pwn初探

32位和64位下的arm_pwn初探前言:pwn的学习之路一直在进行,今天看了arm_pwn,搞环境就搞了半天,琢磨工具使用到做题,这里总结下,希望能帮助到大家,少走一点弯路,后期有机会继续更新。一…

如何用unit test测试controller_如何用电缆故障测试仪冲闪测试确定故障点?

原标题:如何用电缆故障测试仪冲闪测试确定故障点?当我们中试控股在使用电缆故障测试仪检测电缆故障时,遇到故障点二次击穿放电时,其波形要如何分析?首先我们要知道仪器在遇到故障点二次击穿时的表现是怎样的。显示故障…

linux下qt环境的运行,在Linux下使用QT环境来安装和运行WebKit

Installing and Running WebKit in Linux Using QtI’mcoming to appreciate more and more all of the hard work softwaredevelopers perform. I wouldn’t consider myself an open source elitist,but there’s something special about the associated ideologies. When a…

button 样式_缩减 SCSS 50%样式代码的 14 条实战经验

原标题:缩减 SCSS 50%样式代码的 14 条实战经验作者:feishi123前言Sass是CSS3语言的扩展,它能帮你更省事地写出更好的样式表,使你摆脱重复劳动,使工作更有创造性。因为你能更快地拥抱变化,你也将敢于在设计…

神舟电脑装linux双系统,个人windows10和Ubuntu18.04游戏笔记本uefi双磁盘双系统安装过程...

此文章为记录自己的Ubuntu的安装和使用过程本人电脑是128G固态500G机械。固态中装的是windows10,这次决定在机械中安装Ubuntu。虽然网上教程很多,但是我仍然是在参考了多个教程后才动手安装,于是记录自己的安装过程。该机器是神舟Z6-sl7d1,系…

请解释自动装配模式的区别?_如何从齿条优化方面有效节约机床装配时间

齿条:螺纹连接的设计和计算是否正确?如果我们真的想要节约装配成本和时间的话,那么我们首先就需要去选择设计正确的齿条螺钉。那么这时候就紧接着产生了第二个问题:我们应该如何评估并优化这种设计。当我们去观察比较齿轮和齿条这…

linux sendto 源码,Linux内核源代码解析——用户发送数据包的起源之sendto

Jack:我想知道用户如何把数据发送到内核空间的?我:你觉得哪里比较难理解呢?Jack:一般程序员会在程序里通过socket变量获得一个文件描述符,然后通过write把定义好的字符串写入到该描述符。我:是的…

仓库处理中 无法修改_临沂用友U8erp系统软件如何新增仓库?

存货一般是用仓库来保管的,对存货进行核算管理,首先应对仓库进行管理,因此进行仓库设置是供销链管理系统的重要基础准备工作之一。第一次使用本系统时,应先将本单位使用的仓库,预先输入到系统之中,即进行&q…

linux变量最大长度,51CTO博客-专业IT技术博客创作平台-技术成就梦想

变量操作总结:${Var:-Value} 变量Var 为unset 或 null 则输出Value。 有值则输出变量Var的值。${Var:Value} 变量Var 为unset 或 null 则输出Value,并且赋值于变量Var。 同上。${Var:Value} 变量Var 为unset 或 null 则输出变量…