linux系统编程
七公子#
come on
展开
-
线程的条件控制实现线程的同步
在使用线程的时候,通常需要对多线程惊醒条件判断实现同步控制,这里就得用到与线程条件相关的API。即线程的等待和触发,注:条件变量使用前必须先初始化。相关代码如下:#include <stdio.h>#include <pthread.h>#include <unistd.h>#include <stdlib.h>// int pthread_create(pthread_t *thread, const pthread_attr_t *attr,原创 2021-05-17 19:25:10 · 96 阅读 · 0 评论 -
线程、互斥锁
多线程:与进程相比,多线程是一种非常节俭的多任务操作方式。在linux系统下,启动一个新进程必须分配给他独立的地址空间,建立众多的数据表来维护他的代码段、堆栈段和数据段。这是一种昂贵的多任务工作方式。而运行于一个进程中的多个线程,他们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间要远远小于启动一个进程所花费的空间。而且线程间彼此切换花费的时间也要远远小于进程间切换所花费的时间,据统计,总的来说,一个进程的开销大约是一个线程开销的30倍左右。与进程相比,线程有更加方便的通信机制,对不原创 2021-05-16 16:51:38 · 121 阅读 · 0 评论 -
共享内存
共享内存是指两个或多个进程共享一个指定的存储区域。特点:共享内存是一种最快的进程间通信方式,因为可以直接对内存进行操作因为是多个进程同时进行操作,所以需要进行同步下面直接引入代码操作:写端:#include <stdio.h>#include <stdlib.h>#include <sys/ipc.h>#include <sys/shm.h>#include <string.h>#include <unistd.h>原创 2021-05-13 17:22:30 · 53 阅读 · 0 评论 -
linux文件操作-进程间通信-无名管道和有名管道
无名管道:他是半双工的,即数据只能朝一个方向上流动,具有固定的读端和写端。只能用于父子进程或者兄弟进程等之间具有血缘关系的进程间通信。实现以来父子进程和文件共享。对于他的读写可以使用普通的read和write函数,但是他们不是普通的文件,并不属于其他任何文件。函数原型:#include <unistd.h>int pipe(int fd[2]);参数fd返回两个文件描述符,fd[0]为读,fd[1]为写。写数据时关闭fd0,读数据时关闭fd1.通常和forh函数一起使用,这样就创建了一个原创 2021-05-11 14:56:14 · 110 阅读 · 0 评论 -
linuc文件操作
文件操作之fopen、fwrite、发read、fclose、fseek、fputc、fgetc、feofAPI对于文件的操作fopen:FILE *fopen(const char *pathname, const char *mode);返回值是一个FILE类型的指针第一个参数是要操作的文件,第二个参数是对文件操作的权限:“r” = “rt”打开一个文本文件,文件必须存在,只允许读“r+” = “rt+”打开一个文本文件,文件必须存在,允许读写“rb”打开一个二进制文件,文件必须存原创 2021-05-01 21:54:49 · 141 阅读 · 0 评论 -
2021-04-30linuc文件操作1
文件操做:文件操作的一般步骤:打开创建文件->读取/写入文件->关闭文件1、 在Linux中要操作一个文件,一般实现open打开一个文件,得到文件描述符,然后对文件进行读写操作(或其它操作),最后是close关闭文件即可。2、 强调一点:我们对文件进行操作时,一定要先打开文件,打开成功后才能操作,如果打开失败就不用进行后续操作了,最后读写完成后,一定要关闭文件,否则会造成文件损坏3、 文件平时是存放在块设备中的文件系统文件中的,我们把这种文件叫做静态文件,当我们去open一个文件时,L原创 2021-04-30 10:36:27 · 81 阅读 · 0 评论