![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
科学无解
这个作者很懒,什么都没留下…
展开
-
linux学习之makefile的使用
Makefile基本格式如下:target ... : prerequisites ... command ... ...其中,target - 目标文件, 可以是 Object File, 也可以是可执行文件prerequisites - 生成 target 所需要的文件或者目标command - make需要执行的命令 (任意的shell命令), Makefile中的命令必须以 [tab] 开头注意: Makefile只有行注释 "#"eg:1、最简原创 2020-05-25 17:40:16 · 199 阅读 · 0 评论 -
Linux之ctags追踪软件的安装与使用
1、安装ctags追踪软件sudo apt-get install ctags ////要求机器要能连接外网2、进入系统头文件目录cd /usr/include/3、在该目录下创建一个tags的文件sudo ctags -R * ///将当前目录所有的文件建立tags关系表ls -l ./tags ///有文件生成即可===============》以上过程只执行一回4、在当前目录中追踪某个变量或者类型vi -t off_t ==>追踪原创 2020-05-25 17:36:56 · 460 阅读 · 0 评论 -
Linux学习笔记之IPC 对象之信号量集
目的:配合共享内存完成进程间通信;使用框架:key ==>申请信号量集 ==》pv操作 ===》卸载删除信号量集semget() semop() semctl()1、申请信号量#include <sys/sem.h>int semget(key_t key, int nsems, int semflg);功能:该函数可以使用特定的key向内核提出信号量集使用申请;参数:key 唯一键值nsems 要申请的信号量个数;semflg 申请信号原创 2020-05-25 14:16:54 · 125 阅读 · 0 评论 -
Linux学习笔记之共享内存
共享内存对象:(SHM)操作框架:key值==》申请对象==》挂载对象==》读写对象==》卸载对象 ==》删除对象shmget() shmat() 内存读写 shmdt() shmctl()1、申请对象#include <sys/ipc.h>#include <sys/shm.h>int shmget(key_t key, size_t size, int shmflg);功能:该函数使用公共key值向内核提出共享内存使用申请;参数:原创 2020-05-25 14:14:25 · 149 阅读 · 0 评论 -
Linux学习笔记之消息队列
进程间通信之IPC 对象:IPC: 进程间通信IPC对象: 内核维护的一组共享数据对象;消息队列对象 共享内存对象 信号量集对象IPC 通用操作框架:创建key值 》申请IPC对象 》打开对象》读写对象》关闭对象 ==》卸载对象1、唯一key值的创建:1.1 私有键值 ==》IPC_PRIVATE 只给亲缘关系进程使用;1.2 临时键值 ==》ftok() 临时创建键值1.3 自定义键值 ==》 0x12345678 0x888 0x666#include <sy原创 2020-05-25 14:11:56 · 160 阅读 · 0 评论 -
linux学习笔记之进程间的通信--有名管道
有名管道 ====》有名称的管道 ===》FIFO ====》在文件系统中可见文件具备基本的管道所有特性:具有有名管道自有的特性:1、文件系统可见2、文件读写方式调整;3、有名管道文件可以单独创建;使用框架:创建有名管道 =》打开有名管道》读写有名管道 ==》关闭有名管道 ==》卸载有名管道1、创建有名管道:#include <sys/types.h>#include <sys/stat.h>int mkfifo(const char *pathname, mo原创 2020-05-25 13:42:04 · 138 阅读 · 0 评论 -
linux学习笔记之进程间的通信--无名管道
进程间通信:1、古老的进程间通信:无名管道 有名管道 信号2、IPC通信方式:消息队列对象 共享内存对象 信号量集对象3、SOCKET通信方式:TCP UDP古老的通信方式:1、管道 ===》无名管道/有名管道公共特性:1、管道的操作框架;创建管道 ===》打开管道 ==》读写管道 ==》关闭管道 ==》销毁管道2、所有管道都是 半双工 工作模式3、管道是一类特殊文件,操作方式为文件IO,且不支持定位操作;4、管道的通信过程必须保证同步;1.1 无名管道的使用原创 2020-05-25 13:39:00 · 124 阅读 · 0 评论 -
linux学习笔记之信号量
信号量机制:======》判断是否具有可用资源;=====》可用资源 == 信号 == 信号量值为1 的信号;linux 线程的信号量 简称 二值信号量 === 信号量的值(0,1)信号量的使用框架:创建信号量 ===》初始化信号量 ==》 PV操作 ====》信号量的销毁;0、头文件:#include <semaphore.h>1、创建信号量 : 全局定义一个 sem_t 类型的变量;2、初始化:int sem_init(sem_t *sem, int pshared, un原创 2020-05-25 13:27:54 · 285 阅读 · 0 评论 -
Linux学习笔记之互斥锁
多线程编程 之 互斥和同步;互斥 ===》互斥锁 ===》pthread_mutex_t使用操作框架:创建互斥锁 ===》初始化互斥锁 ====》加锁、解锁 ===》销毁互斥锁;1、创建互斥锁:使用互斥锁类型定义一个全局变量;pthread_mutex_t mutex;2、初始化互斥锁:pthread_mutex_initint pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutexattr_t *attr);功能:该原创 2020-05-25 13:24:34 · 322 阅读 · 1 评论 -
linux学习笔记之多线程
:多进程存在的问题:1、多进程时候资源消耗过大; ===》4G2、直接进程间通信有障碍; ===》共享内存3、多进程之间的速度差异; ===》父快于子4、多进程的创建个数限制; ===》ulimit -a基于以上问题,提出多线程解决方案:1、线程是一个轻量级进程;2、线程是进程中的多个任务;3、线程是CPU调度的最小单位;进程是操作系统调度的最小单位线程与进程的区别:资源:多线程比多进程多了共享内存;多线程和多进程都有私有资源;空间:多线程中所有线程共享进程4g内存原创 2020-05-25 13:11:08 · 87 阅读 · 0 评论 -
linux学习笔记之进程
多进程编程函数: ===》fork函数#include <unistd.h>pid_t fork(void);功能:该函数可以动态的生成一个同名进程。父子进程具有相同的逻辑和空间,类似于克隆程序。但是父子进程执行的位置不同,子进程永远从fork函数之后执行。如果要区分父子进程的执行逻辑,可以根据函数返回值来判断约定 fork返回值为0 的是子进程执行逻辑fork返回值>0 的是父亲进程执行逻辑参数:无返回值:大于0 表示子进程pid号等于0 表示子进程小原创 2020-05-25 12:49:56 · 99 阅读 · 0 评论 -
Linux学习笔记之文件属性获取
命令: ls -l 可以列出指定目录或文件的详情。其中包含了众多的文件属性信息。目标:自己编程实现类似于 ls 程序的效果可以查看文件详情方法:1、如何获取文件属性信息。stat 命令比 ls 命令列出的属性更全。且:stat 有系统调用接口函数可以编程使用。#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>int stat(const char *path, struct st原创 2020-05-25 12:31:48 · 199 阅读 · 0 评论 -
Linux学习笔记之文件目录操作
1、文件目录操作:打开目录 ==》遍历目录 ==》关闭目录opendir() readdir() closedir()打开目录:#include <sys/types.h>#include <dirent.h>DIR *opendir(const char *name);功能:该函数可以打开指定路径+名称的目录。参数:name 目录所在的路径+名称返回值:成功 目录流指针,指向一个打开的目录失败 NULLint closedir(DIR *dirp)原创 2020-05-25 11:41:29 · 84 阅读 · 0 评论 -
文件IO学习笔记之二
文件定位操作:off_t lseek(int fd, off_t offset, int whence);功能:在fd所在的文件中移动其文件指针到指定位置。参数:fd 要移动文件指针的文件描述符offset 移动的偏移量,> 0 向文件末尾偏移< 0 向文件开头偏移= 0 文件指针不动whence 移动的起始位置,有如下三个宏。SEEK_SET 文件开头位置SEEK_CUR 文件当前位置SEEK_END 文件末尾位置返回值:成功 返回移动后指针距离文件开头位置的字节数原创 2020-05-24 22:06:04 · 102 阅读 · 0 评论 -
文件IO学习笔记之一
I文件IO ===》操作系统对外封装的一组用户使用的系统调用接口函数。帮助手册使用 man 2 xxx文件io ===》描述符 文件系统 io函数文件系统: 非缓存文件系统,在所有IO操作的过程中没有缓存区的存在。描述符: 相对与标准io的文件操作对象,标准io : FILE * 文件流指针文件io : int 文件描述符文件描述符特征: 最小 未用 非负 整数最小: 默认从3 开始,0 == STDIN_FILENO1 == STDOUT_FILENO2 =原创 2020-05-24 21:55:27 · 146 阅读 · 0 评论 -
将任意两个指定的文件完成拷贝功能:比如:a.out a.txt b.txt 把a.txt的内容拷贝到b.txt 中
#include <stdio.h>int main(int argc, char *argv[]){ if(argc!=3) { printf("Usage %s [file]\n",argv[0]); return -1; } FILE * fp1 = fopen(argv[1], "r"); if(NULL==fp1) {原创 2020-05-24 21:44:47 · 650 阅读 · 0 评论 -
统计指定文件中数字和字符的个数并将结果打印输出
在这里插入#include<stdio.h>int main(int argc, char *argv[]){ if(argc!=2) { printf("Usage %s [file]\n",argv[0]); return -1; } FILE * fp=fopen(argv[1],"r"); if(NULL==fp) {原创 2020-05-24 21:39:57 · 963 阅读 · 0 评论 -
编程读写一个文件,每隔1秒向文件写入一行数据,类似2007-1-1 15:16:1 2007-1-1 15:6:2
在这里插入代#include <stdio.h>#include <errno.h>#include <string.h>#include <time.h>#define N 32#define ErrLog(errmsg) do{perror(errmsg);\ printf("%s %d %s\n",__FILE__,__LINE__,__FUNCTION__);\原创 2020-05-24 21:10:29 · 352 阅读 · 0 评论 -
标准IO学习笔记四
标准io的读文件结尾判断:1、fgetc/fputc ===> fgetc的返回值为EOF == -1;2、fgets/fputs ===> fgets的返回值为NULL == 0 ; ctags追踪3、fread/fwrite ===> fread的返回值为 0 ;4、fscanf/fprintf ==> fscanf的返回值为EOF == -1;标准io的文件定位操作:fseek() ftell() rewind()1、int fseek(FILE *st原创 2020-05-24 21:09:23 · 141 阅读 · 0 评论 -
标准IO学习笔记三
二进制文件读写:fread/fwriteI 操作:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);功能:该函数可以完成任意文件的读操作,不论是文本文件还是二进制文件参数:ptr 用于存储数据的纯地址。size 存储数据的单元大小。nmemb 存储数据的长度,一般是ptr的大小,表示存储单元的个数。stream 获取数据的文件流指针。返回值:成功 返回获取到的数据长度,一般小于等于nmemb的值失败/文件结尾原创 2020-05-24 20:39:17 · 87 阅读 · 0 评论 -
标准IO学习笔记二
字符串读写IO: fgets/fputs ===>专门针对ascii码文件读写char *fgets(char *s, int size, FILE *stream);功能:该函数可以将stream流关联的文件中大小为size的数据读取到本地内存s所在的地址上。参数:s 用于存储数据的本地内存,一般是数组或者堆区内存。size 用于获取数据的长度,一般是s参数的大小 -1;stream 用于获取数据的流指针,如果该值为stdin则表示从键盘获取,否则指定的文件获取。返回值:成功 返原创 2020-05-24 20:26:59 · 85 阅读 · 0 评论 -
标准IO学习笔记一
io: input outputio 设备:输入设备: 键盘终端 ===》默认标准输入输出设备: 显示器终端 ===》默认标准输出标准输入设备:会阻塞等待;io 分层:文件io: ===>基于操作系统对外提供的一组系统调用接口函数===> man 2 xxx 查看===>安全性 高效率 同一接口标准io: ===>基于文件io的一组对外提供功能的c库函数====>man 3 xxx 查看====>可移植 带缓存 高效率标准i原创 2020-05-24 20:11:35 · 138 阅读 · 0 评论