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
这样就批量杀掉筛选出的所有进程了