日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

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

發(fā)布時間:2025/3/11 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux+kill+进程和线程,在LINUX系统中 关于进程和线程终止的问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

#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環(huán)境高級編程中說?進(jìn)程的最后一個線程在啟動例程中?執(zhí)行返回語句,該進(jìn)程正常終止,但是,該線程的返回值不會用作進(jìn)程的返回值,當(dāng)最后一個線程從其啟動例程返回時,該進(jìn)程以終止?fàn)顟B(tài)0返回

問題1:請問什么是啟動例程?是main函數(shù)嗎?

問題2:最后一個線程是指什么?是主線程嗎?是不是上面那個調(diào)用?pthread_create?函數(shù)的線程?如果是的話,這個線程跟進(jìn)程有什么區(qū)別,根據(jù)書上說,最后一個線程在啟動例程里執(zhí)行返回語句,進(jìn)程終止,但是線程的返回值不會作為進(jìn)程的返回值,我這里有弄不明白了,我上面這個程序的?最后一個線程是主線程?它在main函數(shù)中執(zhí)行return??127;進(jìn)程終止,根據(jù)書上說進(jìn)程的退出狀態(tài)應(yīng)該是0?才對,但是我用?echo?$??來查看進(jìn)程的退出狀態(tài)?卻是?127?。

請各位高手指點(diǎn),書上所說的最后一個線程是指什么?最后一個線程的返回值和進(jìn)程的返回區(qū)別在那里,是不是在main函數(shù)中執(zhí)行的return?語句?不是線程的返回語句,而是進(jìn)程的返回語句。如果是進(jìn)程的返回語句,那如果要讓最后一個線程在啟動例程里執(zhí)行返回語句?用什么方法執(zhí)行呢?

|

啟動例程翻譯得不準(zhǔn)確

main函數(shù)是啟動例程,void?*fun(void?*arg)?也是函數(shù)例程

就是指進(jìn)程或線程的執(zhí)行主體

最后一個線程就是最后一個結(jié)束的線程,例子中主線程sleep(1);所以它最后結(jié)束。沒有sleep(1);,那誰先結(jié)束就不能確定了

線程的返回值是?pthread_exit((void?*?1));?傳遞的

return?傳遞的是進(jìn)程的返回值

|

根據(jù)書上說進(jìn)程的退出狀態(tài)應(yīng)該是0?才對,但是我用?echo?$??來查看進(jìn)程的退出狀態(tài)?卻是?127

那是因?yàn)槟愠绦蛲顺龅臅r候搞了個返回值return?127

在linux下的程序一般都是正常結(jié)束返回0或者以0的狀態(tài)退出?程序異常或者錯誤才以非0的值退出?我看了一些源碼大概都是這樣的規(guī)則

最后一個進(jìn)程?從字面上來看就是最后一個退出的進(jìn)程??建議樓主在讀外文著作的時候不要只讀翻譯過來的東西?應(yīng)該下個原版?在某些概念有疑問的時候?去原版的地方看看

|

1、啟動例程就是你的線程實(shí)際執(zhí)行的函數(shù)體代碼,在這里也就是你的>fun()

2、進(jìn)程的最后一個線程就是在進(jìn)程執(zhí)行完之前最晚結(jié)束的那個線程。但是你這里進(jìn)程只開了一個線程,所以最后一個線程就是你開的那個線程>thread了。

據(jù)我理解,線程的返回值是線程執(zhí)行的一種狀態(tài),不知道是不是正確。

|

|

在UNIX環(huán)境高級編程中說?進(jìn)程的最后一個線程在啟動例程中?執(zhí)行返回語句,該進(jìn)程正常終止,但是,該線程的返回值不會用作進(jìn)程的返回值,當(dāng)最后一個線程從其啟動例程返回時,該進(jìn)程以終止?fàn)顟B(tài)0返回

問題1:請問什么是啟動例程?是main函數(shù)嗎?

意思就是指執(zhí)行該線程代碼的進(jìn)程段。

問題2:最后一個線程是指什么?是主線程嗎?是不是上面那個調(diào)用?pthread_create?函數(shù)的線程?如果是的話,這個線程跟進(jìn)程有什么區(qū)別,根據(jù)書上說,最后一個線程在啟動例程里執(zhí)行返回語句,進(jìn)程終止,但是線程的返回值不會作為進(jìn)程的返回值,我這里有弄不明白了,我上面這個程序的?最后一個線程是主線程?它在main函數(shù)中執(zhí)行return??127;進(jìn)程終止,根據(jù)書上說進(jìn)程的退出狀態(tài)應(yīng)該是0?才對,但是我用?echo?$??來查看進(jìn)程的退出狀態(tài)?卻是?127?。

一個進(jìn)程下可以創(chuàng)建多個線程,最后一個退出的子線程就是最后一個線程啊。

至于你說的返回值,要清楚,線程返回值通過pthread_exit實(shí)現(xiàn),return就是進(jìn)程返回。

請各位高手指點(diǎn),書上所說的最后一個線程是指什么?最后一個線程的返回值和進(jìn)程的返回區(qū)別在那里,是不是在main函數(shù)中執(zhí)行的return?語句?不是線程的返回語句,而是進(jìn)程的返回語句。如果是進(jìn)程的返回語句,那如果要讓最后一個線程在啟動例程里執(zhí)行返回語句?用什么方法執(zhí)行呢?

總結(jié)

以上是生活随笔為你收集整理的linux+kill+进程和线程,在LINUX系统中 关于进程和线程终止的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。