日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

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

發布時間:2025/3/11 linux 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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系统中 关于进程和线程终止的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。