linux
Mr.Jcak
这个作者很懒,什么都没留下…
展开
-
POSIX信号量API函数
头文件:semaphore.h初始化:int sem_init(sem_t *sem, int pshared, unsigned int value);sem_init() 初始化一个信号量,信号量对象为sem。value 参数指定信号量的初始值。 pshared 参数指明信号量是由进程内线程共享,还是由进程之间共享。如果 pshared 的值为 0,那么信号量将被进程内的线程共享,并且应该放置在这个进程的所有线程都可见的地址上(如全局变量,或者堆上动态分配的变量)。int sem_.原创 2021-08-01 20:00:46 · 196 阅读 · 0 评论 -
POSIX条件变量API函数
初始化条件变量int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr);返回值:函数成功返回0;任何其他返回值都表示错误初始化一个条件变量。当参数attr为空指针时,函数创建的是一个缺省的条件变量。阻塞int pthread_cond_wait(pthread_cond_t *cond, pthrea原创 2021-07-30 18:14:35 · 189 阅读 · 0 评论 -
POSIX互斥锁api函数
初始化互斥锁int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);参数attr指定了新建互斥锁的属性。如果参数attr为NULL,则使用默认的互斥锁属性。锁定互斥锁int pthread_mutex_lock(pthread_mutex_t *mutex); 当pthread_mutex_lock()返回时,该互斥锁已被锁定。调用..原创 2021-07-30 17:32:18 · 387 阅读 · 0 评论 -
POSIX多线程API函数
创建int pthread_create( pthread_t* tidp, const pthread_attr_t* attr, void* (*start_rtn)(void*), void* arg)tidp:事先创建好的pthread_t类型的参数。成功时tidp指向的内存单元被设置为新创建线程的线程ID。attr:定义新线程的一些属性(配置项),包括线程栈[stack]、分离状态[detachstate]等,大部分情况下默认值即可(NULL)..原创 2021-07-30 17:02:13 · 132 阅读 · 0 评论 -
linux条件变量
某个线程正在等待共享数据内某个条件出现,可可能需要重复对数据对象加锁和解锁(轮询),但是这样轮询非常耗费时间和资源,而且效率非常低。我们需要这样一种方法:当线程在等待满足某些条件时使线程进入睡眠状态,一旦条件满足,就唤醒因等待满足特定条件而睡眠的线程条件变量条件变量是用来等待线程而不是上锁的。条件变量使我们可以睡眠等待某种条件出现。条件变量主要包括两个动作:一个线程等待”条件变量的条件成立”而挂起;另一个线程使”条件成立”(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一原创 2021-07-26 15:44:40 · 130 阅读 · 0 评论 -
linux查看关键词前后几行内容
查看filename文件含有key所在行前10行内容cat filename | grep key -B 10查看filename文件含有key所在行后10行内容cat filename | grep key -A 10查看filename文件含有key所在行前后10行内容cat filename | grep key -C 10-A表示关键字之后,After-B表示关键字之前,Before-C表示关键字前后,Context...原创 2021-07-25 10:31:50 · 3170 阅读 · 0 评论 -
linux将一个文件的内容复制到另一个新的文件
需要创建一个新的文件new_file.txt,并把一个文件file1.txt的内容复制到这个新文件中:cat file1.txt >> new_file.txt原创 2021-07-21 16:43:10 · 5545 阅读 · 0 评论 -
linux文件重命名
mv命令:将文件剪切到当前文件夹并重新命名,执行后,原来的文件消失,新的文件创建成功,新的文件实际上就是原来的文件,只不过名字变了。例如:mv old_file.txt new_file.txt原创 2021-07-21 16:41:23 · 702 阅读 · 0 评论 -
linux高亮查找关键字
日志文件中通常需要高亮查找某个关键字,方法为tail日志文件| grep -E关键字--color=auto原创 2021-07-15 19:21:54 · 2461 阅读 · 0 评论 -
删除当前文件夹下特定名称文件
以下命令删除当前文件夹下所有名称带log的文件find . -name "*log*" |xargs rm -rf原创 2021-07-15 17:55:11 · 410 阅读 · 0 评论 -
内存管理之段错误
当程序试图访问不允许访问的内存位置,或试图以不允许的方式访问内存位置时会发生段错误。几种常见的段错误:使用野指针试图修改字符串常量的内容原创 2021-06-20 15:01:18 · 205 阅读 · 0 评论 -
linux的exec函数
在用fork函数创建子进程后,子进程往往要调用一个e x e c函数以执行另一个程序当进程调用一种e x e c函数时,该进程完全由新程序代换,而新程序则从其m a i n函数开始执行。因为调用e x e c并不创建新进程,所以前后的进程I D并未改变。e x e c只是用另一个新程序替换了当前进程的正文、数据、堆和栈段。...原创 2021-06-19 20:43:48 · 186 阅读 · 0 评论 -
gdb调试
如果要对一个main程序进行gdb调试,那就在编译时要加上-g选项g++ -g main.cpp -o main设置断点:原创 2021-05-29 17:03:23 · 510 阅读 · 0 评论 -
vim复制一个文件的多行到另一个文件
vim打开一个文件后复制多行,退出这个文件之后,打开另一个文件想复制到这个文件,却发现在上一个文件中复制的内容不见了所以vim复制一个文件的多行到另一个文件的正确做法是要同时打开两个文件比如要把add.cpp...原创 2021-05-29 14:44:56 · 4170 阅读 · 0 评论 -
linux vim复制和粘贴
复制:在命令行模式下将光标移至要复制的行,按下yy即可复制该行,如果要复制5行,按下5yy即可复制从光标这行开始的5行粘贴:原创 2021-05-29 14:39:00 · 803 阅读 · 0 评论 -
linux vim下删除一行和多行
删除一行:在命令模式下将光标移至要删除的行位置,按下dd删除n行:假设要删除5行,在命令模式下将光标移至要删除的行位置,按下5dd原创 2021-05-29 14:34:03 · 8346 阅读 · 0 评论 -
makefile编写
假设现在有一个add.cpp,add.h,main.cpp这三个文件,文件内容如下:add.cpp:add.h:main.cpp:我需要将add.cpp和main.cpp这两个文件进行编译原创 2021-05-29 12:11:51 · 153 阅读 · 0 评论 -
linux的find命令满屏权限不够提示
用find命令是如果是普通用户通常会输出一堆“权限不够”的提示,这会影响到我们找出有用的信息,为了将这些错误忽略,可以采用重定向:原创 2021-05-29 11:09:30 · 1915 阅读 · 0 评论 -
g++编译多个文件
假设现在有一个add.cpp,add.h,main.cpp这三个文件,文件内容如下:add.cpp:add.h:main.cpp:我需要将add.cpp和main.cpp这两个文件进行编译,有以下两种方法:g++ -c add.cppg++ -c main.cppg++ main.o add.o -o test./test第二种方法:g++ main.cpp add.cpp -o test./test...原创 2021-05-21 12:05:41 · 2522 阅读 · 0 评论 -
linux将命令的执行结果赋给变量
用反引号val=`command`原创 2021-05-10 23:40:08 · 1301 阅读 · 0 评论