linux線程終止
❶ linux線程的幾種結束方式
Linux線程的幾種結束方式
Linux創建線程使用
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine)(void *), void *arg)
1
2
Linux線程的幾種結束方式:
調用pthread_exit(exit_code),exit_code為線程退出的狀態代碼。同一進程下的其他線程可以通過pthread_join(exit_code)來使用。
函數start_routine使用return返回,與調用pthread_exit()作用相同。
線程被取消pthread_cancel()。
同一進程中的其他線程調用了exit(),,或者主線程從main函數返回。
❷ linux下C中怎麼讓才能安全關閉線程
多線程程序中,特別是頻繁申請,釋放線程的情況下,就要注意線程的關閉,最好使用線程池。
一,線程退出方式
(1) 執行完成後隱式退出;
(2) 由線程本身顯示調用pthread_exit 函數退出;
pthread_exit (void * retval) ;
(3) 被其他線程用pthread_cance函數終止:
pthread_cance (pthread_t thread) ;
二,線程狀態
pthread 線程有兩種狀態,joinable(非分離)狀態和detachable(分離)狀態,默認為joinable。
joinable:當線程函數自己返回退出或pthread_exit時都不會釋放線程所用資源,包括棧,線程描述符等(有人說有8k多,未經驗證)。
detachable:線程結束時會自動釋放資源。
joinable 線程執行完後不使用pthread_join的話就會造成內存泄漏。
解決辦法:
1、創建線程前設置 PTHREAD_CREATE_DETACHED 屬性
pthread_attr_t attr;
pthread_t thread;
pthread_attr_init (&attr);
pthread_attr_setdetachstat(&attr, PTHREAD_CREATE_DETACHED);
pthread_create (&thread, &attr, &thread_function, NULL);
pthread_attr_destroy (&attr);
2、當線程為joinable時,使用pthread_join來獲取線程返回值,並釋放資源。
3、當線程為joinable時,也可在線程中調用 pthread_detach(pthread_self());來分離自己。
❸ linux常用的20個命令
1、find 查找文件或目錄
find / -size +204800k //在根目錄下查找大於200MB的文件
find / -user username//在根目錄下查找所有者為username的文件
find / -name filename.txt //根據名稱查找/目錄下的filename.txt文件。
2、復制文件包括其子文件到自定目錄
cp -r sourceFolder targetFolder
3、查看一個程序是否運行
ps –ef|grep tomcat //查看所有有關tomcat的進程
4、終止線程
kill -9 19979 //終止線程號位19979的線程
5、查看文件,包含隱藏文件
ls -al
6、當前工作目錄
pwd
7、創建目錄
mkdir newfolder
8、刪除目錄(此目錄是空目錄)
rmdir deleteEmptyFolder
9、刪除文件包括其子文件
rm -rf deleteFile
10、移動文件
mv /temp/movefile /targetFolder//擴展重命名 mv oldNameFile newNameFile
11、切換用戶
su -username
12、修改文件許可權
chmod 777 file.java //file.java的許可權-rwxrwxrwx,r表示讀、w表示寫、x表示可執行
13、壓縮文件
tar -czf test.tar.gz /test1 /test2
14、列出壓縮文件列表
tar -tzf test.tar.gz
15、解壓文件
tar -xvzf test.tar.gz
16、查看文件頭10行
head -n 10 example.txt
17、查看文件尾10行
tail -n 10 example.txt
18、查看日誌文件
tail -f exmaple.log //這個命令會自動顯示新增內容,屏幕只顯示10行內容的(可設置)。
19、啟動Vi編輯器
vi
20、查看系統當前時間
date
命令會輸出 周幾 幾月 幾日 時間 和 時間顯示格式 和年份
Sat Feb 22 15:36:49 CST 2019
date +」%Y-%m-%d」
顯示如下:
[root@ming xxx]# date +"%Y-%m-%d"
❹ linux如何停止線程
殺死線程 所在的進程就可以,
ps aux | grep 進程名
kill -TERM 進程號
如果你指的寫程序, 那就參考 man pthread_exit
❺ linux常用的20個命令是什麼
linux常用的20個命令:
1、ls命令
ls命令是列出目錄內容(List Directory Contents)的意思。運行它就是列出文件夾里的內容,可能是文件也可能是文件夾。
2、lsblk命令
"lsblk"就是列出塊設備。除了RAM外,以標準的樹狀輸出格式,整齊地顯示塊設備。
3、查看一個程序是否運行
ps –ef|grep tomcat //查看所有有關tomcat的進程
4、終止線程
kill -9 19979 //終止線程號位19979的線程
5、查看文件,包含隱藏文件
ls -al
6、當前工作目錄
pwd
7、創建目錄
mkdir newfolder
8、刪除目錄(此目錄是空目錄)
rmdir deleteEmptyFolder
9、刪除文件包括其子文件
rm -rf deleteFile
10、移動文件
mv /temp/movefile /targetFolder//擴展重命名 mv oldNameFile newNameFile
11、切換用戶
su -username
12、修改文件許可權
chmod 777 file.java //file.java的許可權-rwxrwxrwx,r表示讀、w表示寫、x表示可執行
13、壓縮文件
tar -czf test.tar.gz /test1 /test2
14、列出壓縮文件列表
tar -tzf test.tar.gz
15、解壓文件
tar -xvzf test.tar.gz
16、查看文件頭10行
head -n 10 example.txt
17、查看文件尾10行
tail -n 10 example.txt
18、查看日誌文件
tail -f exmaple.log //這個命令會自動顯示新增內容,屏幕只顯示10行內容的(可設置)。
19、啟動Vi編輯器
vi
20、查看系統當前時間
date
命令會輸出 周幾 幾月 幾日 時間 和 時間顯示格式 和年份
Sat Feb 22 15:36:49 CST 2019
date +」%Y-%m-%d」
❻ linux 怎麼能讓線程暫時停止
殺死線程 所在的進程就可以, ps aux | grep 進程名 kill -TERM 進程號 如果你指的寫程序, 那就參考 man pthread_exit
❼ 如何在linux下用c++強制結束一個線程呢
執行完成後隱式退出
由線程本身顯示調用pthread_exit 函數退出;
pthread_exit (void * retval)被其他線程用pthread_cance函數終止:
pthread_cance (pthread_t thread)解決辦法:
// 創建線程前設置 PTHREAD_CREATE_DETACHED 屬性
pthread_attr_t attr;
pthread_t thread;
pthread_attr_init (&attr);
pthread_attr_setdetachstat(&attr, PTHREAD_CREATE_DETACHED);
pthread_create (&thread, &attr, &thread_function, NULL);
pthread_attr_destroy (&attr);
當線程為joinable時,使用pthread_join來獲取線程返回值,並釋放資源。
當線程為joinable時,也可在線程中調用 pthread_detach(pthread_self());
❽ linux如何殺掉線程
我們使用linux時遇到埠佔用,在了解佔用程序影響不大的情況下,會通過netstat命令找到佔用埠的進程,直接kill掉
查找埠佔用命令:
netstat -tnlp | grep 80
可以看到,進程id為20902的進程佔用了80埠
我們可以選擇使用命令 kill pid 殺掉進程
kill 20902
或者使用kill -9 pid 強殺進程
kill -9 20902
如果你需要殺掉所有篩選結果下的進程可以使用
ps -aux|grep name|awk '{print $2}'|xargs kill -9
其中name是你要查詢的服務名稱,例如我要查nginx的所有服務可以使用
ps -aux|grep nginx
我們要篩選出第二項pid
ps -aux|grep name|awk '{print $2}'
篩選出後要殺掉這些進程
ps -aux|grep name|awk '{print $2}'|xargs kill -9
這樣就批量殺掉篩選出的所有進程了