一、常用快捷键
ubuntu常用快捷键
vim编辑器常用快捷键
Linux常用命令
signal信号的含义
二、Linux c编程的一些巧思
1.数组部分
循环部分数组反复赋值读值,为了防止读到之前的字符串
buf[strlen(buf)-1]='\0';
假如是结构体,数组初始化,可以使用memset,bzero来清零,但是循环中并不建议使用。
meset(&per,0,sizeof(per));
bzero(&per,sizeof(per));
数组赋值的时候多使用strcpy
strcpy(per.name , "zhangsan");
二级指针多数时候用来做参数接一级指针,void*指针可以接任意数据类型,但传参之后要进行强制类型转换。
一级指针还原成基础类型需要对指针取星。
在c语言中,字符串常量是可以赋值给char *的,c++似乎不可以。
对基础类型取&,是在升高类型。
char c = *buf;
拼接输出,拆分字符串,字符串转换
sprintf(path,"%s/%s",path,filename);
char *arg=strtok(buf,":");
char *arg1=strtok(NULL ,":");
2.IO函数部分
注意到哪些函数是带缓冲区的,printf,scanf,f开头的文件操作函数大都带缓冲。
read,write,
//1.
fflush(stdout);
//2. \n
//3.缓冲区满
//4.程序结束
read返回值是读到的字节数,直接写很方便
int rd_ret = read(fd,buf,sizeof(buf));
3.PRO函数部分
detach函数的使用:由于detach函数仅仅是分离主次线程的生命周期,所以当主线程结束后,次线程如果还没有执行完,会把次线程也结束掉。
join函数的使用:把线程变成unjoinable,这里是主线程等待次线程执行完之后再结束进程。