#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系统中 关于进程和线程终止的问题相关推荐

  1. Linux系统中的进程管理

    Linux系统中的进程管理 了解进程 进程是已启动的可执行程序的运行实例,进程有以下组成部分: • 已分配内存的地址空间: • 安全属性,包括所有权凭据和特权: • 程序代码的一个或多个执行线程: • ...

  2. 管理Linux系统中的进程

    1.什么是进程? (1)进程与程序     在Linux系统当中,触发任何一个事件时,系统都会将它定义成为一个进程,并且给予这个进程一个ID,称为PID,同时依据启发这个进程的用户与相关属性关系,给予 ...

  3. 搞它!!!Linux系统中查看进程和计划任务管理

    文章目录 首先我们了解一下程序和进程的关系: 一.查看进程 1.查看静态的进程统计信息(ps) 2.查看静态的进程统计信息(top) 3.pgrep命令(查询进程信息) 4.pstree命令(查看进程 ...

  4. Linux系统中查看进程和计划任务管理

     各位小伙伴们大家好,本次给大家带来的是Linux操作系统中的进程和计划任务的管理,首先大家都知道程序是保存在外部存储介质(如硬盘.光盘)中的可执行机器代码和数据的静态集合,而进程是在CPU及内存中 ...

  5. linux mysql 僵尸进程_Linux 系统中僵尸进程

    Linux 系统中僵尸进程和现实中僵尸(虽然我也没见过)类似,虽然已经死了,但是由于没人给它们收尸,还能四处走动.僵尸进程指的是那些虽然已经终止的进程,但仍然保留一些信息,等待其父进程为其收尸. 僵尸 ...

  6. linux java 僵尸进程_Linux 系统中僵尸进程

    Linux 系统中僵尸进程和现实中僵尸(虽然我也没见过)类似,虽然已经死了,但是由于没人给它们收尸,还能四处走动.僵尸进程指的是那些虽然已经终止的进程,但仍然保留一些信息,等待其父进程为其收尸.配图源 ...

  7. Android系统中的进程管理:内存的回收

    本文是Android系统进程管理的第三篇文章.进程管理的前面两篇文章,请参见这里: Android系统中的进程管理:进程的创建 Android系统中的进程管理:进程的优先级 本文适合Android平台 ...

  8. Android系统中的进程管理:进程的创建

    对于操作系统来说,进程管理是其最重要的职责之一. 考虑到这部分的内容较多,因此会拆分成几篇文章来讲解. 本文是进程管理系统文章的第一篇,会讲解Android系统中的进程创建. 本文适合Android平 ...

  9. Android系统中的进程管理:进程的优先级

    本文是Android进程管理系列文章的第二篇,会讲解进程管理中的优先级管理. 进程管理的第一篇文章:<进程的创建>请跳转至这里. 本文适合Android平台的应用程序开发者,也适合对于An ...

  10. Windows系统中查看进程、及杀死进程的相关命令

    netstat  查看所有进程和端口号 netstat -ano 查看指定端口的程序是否被占用 netstat -ano | findstr "8080" tasklist  查看 ...

最新文章

  1. NLPer,是时候重视因果推理了!这有一份杨笛一等撰写的综述
  2. python入门到实践-一本书搞定Python入门到实践
  3. Mysql遇到Too many connections的解决办法
  4. Java NIO之套接字通道
  5. Python小游戏(并夕夕版飞机大战)
  6. 【经典回放】多种语言系列数据结构算法:二叉树(C#版)
  7. 实数历史无穷小能否带领我们直接走向今日科学之辉煌?
  8. 城市大数据的生态模型及应用
  9. 安装Windows7出现:”安装程序无法创建新的系统分区 也无法定位系统分区“ 终极解决方案...
  10. Hibernate-04-实体编写规范
  11. Java基础学习总结(113)——异常最佳实践
  12. 软件测试—软件测试基础知识—(五)软件测试模型
  13. 前端也能玩转机器学习?Google Brain 工程师来支招!
  14. python中哈希是什么意思_python 中倒是什么事可哈希的意思那?
  15. Switch / Xbox / PS / PSV / PSP 游戏指南
  16. Matlab颜色对照(RGB三元组、十六进制表示)
  17. linux stubs 32.h,解决 error: gnu/stubs-32.h: No such file or directory
  18. 【附源码】计算机毕业设计java学生网上请假系统设计与实现
  19. 存放在电脑中的文件丢失了怎么恢复
  20. 初读YOLOv1算法

热门文章

  1. mysql表在线转成分区表_11g普通表在线转换分区表
  2. ORA-04063: view DAILY.TMP_TBX_100_0_S4 有错误
  3. internal java compiler error_Java异常处理总结
  4. 执行 link.exe 时出错_在20多岁时应该做什么,以避免在30多岁和40多岁时后悔?...
  5. Java语言所有异常类均继承自_Java将运行错误分为两类:(__)和(__), 其对应的类均派生自(__)类;...
  6. treeset java_Java TreeSet add()方法与示例
  7. JavaScript | 演示函数中按值调用的示例
  8. Java LinkedList公共对象pollLast()方法(带示例)
  9. ctype函数_PHP ctype_cntrl()函数与示例
  10. android 动态contextmenu,在Android中使用ContextMenu与ListView