![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 90
linux
白少平
裸辞?
展开
-
互斥锁/读写锁(Linux)
写者:写者使用写锁,如果当前没有读者,也没有其他写者,写者立即获得写锁;否则写者将等待,直到没有读者和写者。如果互斥锁当前没有被锁住,那么调用将成功,该线程将对互斥锁进行加锁并立即返回。读者:读者使用读锁,如果当前没有写者,读者立即获得读锁;其中mutexattr用于指定互斥锁属性,如果为NULL则使用缺省属性。不能同时访问的资源,比如写文件,只能由一个线程写,同时写会写乱。函数进行解锁,以允许其他线程获得对互斥锁的访问。,不管是读者试图加读锁,还是写者试图加写锁,参数是一个指向互斥锁对象的指针,原创 2024-01-25 21:59:06 · 1208 阅读 · 1 评论 -
Linux指令学习
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。访问Linux手册页的命令是。原创 2023-12-06 19:29:15 · 1302 阅读 · 0 评论 -
线程池概念和使用
然后,函数会再次获取线程池的互斥锁,将新任务添加到任务队列的末尾。接着,函数会增加线程池的忙碌线程数,并通过条件变量通知正在等待的线程有新的任务可以执行。最后,函数释放互斥锁,任务添加完毕。再次尝试获取线程池的互斥锁,以便检查线程池中的忙碌线程数是否已经小于最大容量。通俗的讲就是一个线程的池子,可以循环的完成任务的一组线程集合。线程池工作线程,它是任务队列,任务的消费者,等待新任务的信号。:完成任务后,将线程池中的忙碌线程数减一,表示当前线程空闲。任务队列,存储需要处理的任务,由工作线程来处理这些任务。原创 2024-02-21 19:43:23 · 871 阅读 · 0 评论 -
Linux信号机制(二)
只要在5s内按下了CTRL+C就会信号捕获打印handle中的语句,且这个时候因为pause(),再按下CTRL+C会再次运行mytask()。可以发现,当我用CTRL+C,接着运行,之后程序就运行到while(1)里了,当我再CTRL+C因为信号捕获的关系才会打印句柄里的语句I get the sig = 2。信号递达(Delivery ):实际信号执行的处理过程(3种状态:忽略,执行默认动作,捕获)、信号未决(Pending):从产生到递达之间的状态。参数:sigmask:希望屏蔽的信号。原创 2024-03-13 16:48:33 · 865 阅读 · 0 评论 -
Linux消息队列
概念:消息队列是System V IPC对象的一种。原创 2024-03-14 14:42:09 · 412 阅读 · 0 评论 -
Linux Ncurses库部分函数使用说明
【代码】Linux Ncurses部分库函数使用说明。原创 2024-03-20 19:27:27 · 949 阅读 · 0 评论 -
Linux信号灯
概念:是不同进程间或一个给定进程内部不同线程间同步的机制。注意:编译posix信号灯需要加pthread动态库。Posix 无名信号灯 (linux只支持线程同步)System V 信号灯。Posix 有名信号灯。原创 2024-03-14 17:17:39 · 486 阅读 · 0 评论 -
Linux信号机制
这种方式下,进程对收到的信号不做任何响应。这通常用于某些不需要处理的信号,或者是在某些特定情况下临时禁用信号处理器。:这种方式下,进程定义一个信号处理函数,用于处理特定信号。当进程收到指定信号时,会调用这个信号处理函数。这允许程序员自定义对信号的处理方式,概念:信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式。然后,你可以在需要的时候使用这个指针来重新设置信号处理函数,从而恢复到先前的处理方式。当程序启动时,通常会有一些默认的信号处理方式。函数会设置一个定时器,在指定的秒数之后,会产生。原创 2024-03-11 16:32:30 · 885 阅读 · 0 评论 -
Linux--Flappy_bird实现
【代码】Linux--Flappy_bird实现。原创 2024-03-22 16:35:50 · 500 阅读 · 0 评论 -
Linux笔试题
2. 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;writer.c 从管道/home/linux/myfifo中读取内容,写到argv[1]所指定的文件中并保存。reader.c 从argv[1]所指定的文件中读取内容,依次写到管道/home/linux/myfifo中。代码中可省略头文件,/home/linux/myfifo无需创建。3. 编写程序实现如下功能。原创 2024-03-20 14:32:50 · 394 阅读 · 0 评论 -
Linux线程
4. 线程内的return 可以结束线程,也可以给pthread_join返回值,但不能触发pthread_cleanup_push里面的回调函数,所以我们结束线程尽量使用pthread_exit退出线程。2.pthread_cleanup_pop()被执行且参数为0,pthread_cleanup_push回调函数routine不会被执行。3.thread_cleanup_push 和pthread_cleanup_pop可以写多对,routine执行顺序正好相反。在循环中被调用,以检查是否有取消请求。原创 2024-01-24 20:25:59 · 843 阅读 · 0 评论 -
文件操作函数总结(Linux)
新建一个名为test.txt的文本文件,向文件内输入"This is test.\n"(""内是输入的内容)运行结果为:ABCDEFGHIJKLMNOPQRSTUVWXYZ,其对应的ASCII码值为65-90。也可以采用先关闭再打开文件的方式,但是需要注意文件打开方式:我这里为了省事直接用的a+修改如下:fseek(fp,0,SEEK_SET);示例代码: 打印26个大写字母到1.txt文本。这样始终打印的都是test.c的大小。使用fprintf和sprintf。示例一: 每次只能获取一个字符。原创 2024-01-18 20:52:34 · 1081 阅读 · 0 评论 -
Linux进程
在接下来的输出中看到 "This is father process" 和 "father after fork",这证实了这部分代码是在父进程中执行的。函数返回的,它返回的是子进程的进程ID。所以,在父进程中,这个值是子进程的进程ID。父进程的进程ID是3800,而子进程的进程ID是由操作系统动态分配的。3800的父进程ID(PPID)是2728,而3801的父进程ID(PPID)是3800。实现一个进程链,父进程->子进程->孙进程->重孙进程->重重孙进程。为什么需要wait?原创 2024-01-23 16:08:50 · 387 阅读 · 0 评论 -
Linux内存映射
使一个磁盘文件与内存中的一个缓冲区相映射,进程可以像访问普通内存一样对文件进行访问,不必再调用read,write。原创 2024-03-08 16:49:16 · 963 阅读 · 0 评论