分离线程
默认情况下,新创建的线程是joinable(状态)的,线程退出后,需要对其进行pthread_join操作,否则无法释放 资源,从而造成系统泄漏。
如果不关心线程的返回值,join是一种负担,这个时候,我们可以告诉系统,当线程退出时,自动释放线 程资源。
int pthread_detach(pthread_t thread);
#include <sys/types.h>
#include <sys/shm.h>
void *shmat(int shmid, const void *shmaddr, int shmflg);
int shmdt(const void *shmaddr);
与共享内存那块命名相似但是完全没有关系。
查看线程id:pthread_self()
#include<iostream>
#include<string>
#include<unistd.h>
#include<pthread.h>
using namespace std;
string changeId(const pthread_t &thread_id)
{
char tid[128];
snprintf(tid,sizeof(tid),"0x%x",thread_id);
return tid;
}
void *start_routine(void*args)
{
string threadname=static_cast<const char*>(args);
while(true)
{
cout<<threadname<<"running ..."<<changeId(pthread_self())<<endl;
sleep(1);
}
}
int main()
{
pthread_t tid;
pthread_create(&tid,nullptr,start_routine,(void*)"thread 1");
string main_id=changeId(pthread_self());
cout<<"main thread running new thread id : "<<changeId(tid)<<"main thread id: "<<main_id<<endl;
pthread_join(tid,nullptr);
return 0;
}
./mythread
main thread running new thread id : 0xeb525700main thread id: 0xec539740
thread 1running ...0xeb525700
thread 1running ...0xeb525700
thread 1running ...0xeb525700
thread 1running ...0xeb525700
thread 1running ...0xeb525700
thread 1running ...0xeb525700
linux常用命令(6):mv命令(移动文件/目录)
mv参数设置与运行结果
命令格式 | 运行结果 |
---|---|
mv 文件名 文件名 | 将源文件名改为目标文件名 |
mv 文件名 目录名 | 将文件移动到目标目录 |
mv 目录名 目录名 | 目标目录已存在,将源目录移动到目标目录;目标目录不存在则改名 |
mv 目录名 文件名 | 出错 |