欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > linux >内容正文

linux

linux+kill+进程和线程,在LINUX系统中 关于进程和线程终止的问题

发布时间:2025/3/11 linux 28 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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系统中 关于进程和线程终止的问题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。