- 博客(19)
- 收藏
- 关注
原创 Liunx树莓派(ARM)开发篇—linux库(一)分文件编程
Liunx树莓派开发篇—分文件编程分文件编程有时一个项目需要实现很多模块功能,如果把这些模块代码都塞进main函数里,会显得程序臃肿,不美观。针对这一现象,可引入分文件编程分文件编程就是将主函数与各模块函数分离成不同的.C文件,同时新建一个.h文件用于存放各模块函数的声明,在主函数中调用.h文件。分文件能使程序功能责任划分,方便调试,主程序简洁例子实现两个整数的加减乘除。以加法为例a.创建.h文件,用于声明函数int jiafa( int a, int b);b.创建.c文件,编写函数代码
2021-02-22 12:46:50
224
原创 Liunx树莓派刷机后一般流程
Liunx树莓派刷机后一般流程1.配置根目录config和cmdline文件2.入网输入指令sudo nano /etc/wpa_supplicant/wpa_supplicant.conf修改ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1country=CN network={ ssid="你的无线网名字" psk="密码" key_mgmt=W
2021-02-22 12:33:46
184
原创 Liunx系统编程篇—进程通信(五)信号
Liunx系统编程篇—进程通信(五)信号原理对于Linux,信号是软中断,例如下课铃响了,老师要停止讲课。许多重要的程序都需要处理信号。信号,为 Linux 提供了一种处理异步事件的方法。比如,终端用户输入了ctrl+c来中断程序,会通过信号机制停止一个程序。概述每个信号都有一个名字和编号,这些名字都以“SIG”开头,例如“SIGIO ”、“SIGCHLD”等等。信号定义在**signal.h头文件中,信号名都定义为正整数。具体的信号名称可以 使用kill -l**来查看信号 的名字以及序号,
2021-02-16 11:44:58
404
原创 Liunx系统编程篇—进程通信(四)共享内存
Liunx系统编程篇—进程通信(四)共享内存共享内存(Shared Memory),指两个或多个进程共享一个给定的存储区。特点共享内存是最快的一种 IPC,因为进程是直接对内存进行存取。因为多个进程可以同时操作,所以需要进行同步。信号量+共享内存通常结合在一起使用,信号量用来同步对共享内存的访问。大概的步骤1、创建共享内存2、进程A连接共享内存,写入数据3、进程A断开连接4、进程B连接共享内存,读取数据5、进程B断开连接6、释放公共内存共享内存常用api#include <sys
2021-02-15 21:39:41
188
原创 Liunx系统编程篇—进程通信(三)消息队列
Liunx系统编程篇—进程通信(三)消息队列消息队列消息队列(message queue),是消息的链接表,存放在内核中。一个消息队列由一个标识(即队列ID)来标识。特点(1)消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级(链表存放的为结构体)。(2)消息队列独立于发送与接收进程。进程终止时,消息队列及其内容并不会被删除(管道是读完就消失),除非销毁队列。(3)消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取(链表的特性),也可以按消息的类型读取。(4)没有固定
2021-02-14 17:40:09
160
原创 Liunx系统编程--进程通信(二),命名管道
Liunx系统编程–进程通信(二),命名管道特点FIFO可以在无关的进程之间交换数据,与无名管道不同。FIFO 有路径名(无名管道没有)与之相关联,它以一种特殊设备文件形式存在于文件系统中。管道中的数据被读走就没了,同时保持FIFO先进先出的特点。#include <sys/stat.h>#include <sys/types.h>int mkfifo(const char *pathname, mode_t mode);返回值:成功返回0,出错返回-1mod
2021-02-14 12:48:06
197
原创 Liunx系统编程--进程通信,无名通信(一)
Liunx系统编程–进程通信(一),创建无名管道IPC进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息,方式通常有管道(无名管道和命名管道),信号量,消息队列,共享存储,Socket,Streams等。其中Socket,Streams支持不同主机上的两个进程IPC。管道通信原理1.管道,通常是指无名管道,是UNIX系统IPC最古老的形式,通常有以下特点它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。它只能用于
2021-02-06 20:20:15
142
原创 Linux下system () 函数详解简介
Linux下system (),popen 函数详解简介转载执行shell 命令)相关函数fork,execve,waitpid,popen表头文件#include<stdlib.h>定义函数int system(const char * string);函数说明system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号
2021-02-02 16:57:36
409
原创 Linux系统编程篇进程三进程退出
Linux系统编程篇进程四进程退出wait,waitpid正常退出main函数调用return进程调用exit(),标椎c库进程调用_exit()或者Exit(),属于系统调用进程最后一个线程返回,调用pthread_exit异常退出调用abort当进程收到某些信号时,如crlt+c最后一个线程对取消(cancellation)请求作出响应不管进程如何终止,最后都会执行内核中的同一段代码。这段代码为相应进程关闭所有打开描述符,释放它所使用的存储器等。对上述任意一种
2021-02-02 16:56:18
154
原创 Linux下system () 函数详解简介
Linux下system (),popen 函数详解简介转载执行shell 命令)相关函数fork,execve,waitpid,popen表头文件#include<stdlib.h>定义函数int system(const char * string);函数说明system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号
2021-02-02 16:55:47
1089
原创 vfork函数的用法和(fork)的区别
Linux系统编程篇进程三vfork函数的用法和(fork)的区别1.vfork直接使用父进程存储空间,不拷贝2.vfork保证子进程先运行,当子进程调用exit后,父进程执行// fork#include <sys/types.h>#include <unistd.h>#include <stdio.h>int main(){ pid_t pid; pid=fork(); if(pid>0){
2021-02-02 16:54:59
166
原创 Linux系统编程篇二进程的创建(fork),过程发生了什么
Linux系统编程篇进程二的创建(fork),过程发生了什么参考原文地址fork//头文件#include <sys/types.h>#include <unistd.h>//函数声明pid_t fork(void);//返回值(成功)返回两次pid 返为回值为0,代表当前进程是子进程 返回值为非负数,代表当前进程为父进程(失败),返回-1#include <sys/types.h>#include <unistd.h>#i
2021-02-02 16:53:11
456
原创 Linux系统编程篇—进程(概念)相关的问题
Linux系统编程篇—进程(概念)相关的问题1.什么是程序,什么是进程,又什么区别?程序是静态的概念, gcc xxxx.c -o pro,磁盘中生成的pro文件,叫做程序进程的则是正在运行的程序(动态的概念)2.如何显示进程ps (显示部分)ps -aux (显示全部)ps -aux|grep init (精确查找 有init的)top 指令,类似Windows中的任务管理器3.什么是进程表示符?每一个进程都有一个非负整数表示唯一的ID,pid(类似我们的
2021-02-02 16:52:48
107
原创 fopen,fwrite,fread,的详细用法.....
fopen,fwrite,fread,的详细用法#include <stdio.h>FILE *fopen(const char *pathname, const char *mode);FILE *fdopen(int fd, const char *mode);FILE *freopen(const char *pathname, const char *mode, FILE *stream);返回值 ,成功为文件指针,失败为NULL//pathname :路径//mode
2021-01-30 22:48:46
449
1
原创 Linux系统编程篇(文件)编程操作四 文件操作小应用修改配置文件
Linux系统编程篇(文件)编程操作四 文件操作小应用修改配置文件用到函数strstr头文件#include <string.h>//函数原型 char *strstr(const char *haystack, const char *needle);haystack :大的字符串need1e :你要查找的字符串RETURN VALUE 返回值 These functions return a pointer to the beginning of the
2021-01-30 22:47:30
104
原创 fopen和open的区别
fopen和open的区别原文:https://blog.youkuaiyun.com/u014379540/article/details/52388804?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPa
2021-01-30 22:44:40
245
原创 Linux系统编程篇(文件)编程操作三 文件操作小应用cp指令
Linux系统编程篇(文件)编程操作三 文件操作小应用cp指令cpcp text1.c text2.c// 复制原文件text1.c 为text2.ccp的思路1.打开text1.c,并读取内容到buf(缓冲)2.创建text2.c,将buf写入到text2.c3.关闭两个文件过程利用特性include <stdio.h>int main(int argc,char **argv){ printf("参数的总数:%d\n",argc);
2021-01-30 22:43:44
125
原创 Linux系统编程篇(文件)编程操作二 文件操作原理
Linux系统编程篇(文件)编程操作二 文件操作原理文件描述符对于内核而言,所有打开文件操作都由文件描述符(非负整数)引用。当打开一个现存文件或者创建一个新文件时,内核相进程返回一个文件的一个描述符。读写文件时,用open和create返回的文件描述符标识该文件,作为参数传递给read和write。int fd;char buf[128];char read[128];fd=open("./file",ORDWR);write(fd,buf,strlen(buf));read(fd,re
2021-01-30 22:42:56
167
原创 Linux系统编程篇(文件)编程操作 一创建,打开,写入,读取,光标(lseek)
open 函数参数说明 // open的头文件#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);int creat(const char *pathname, mode_t mode);//
2021-01-28 14:26:11
254
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人