linux C 编程
文章平均质量分 52
希哈科技
希哈科技 (XIHA) 致力于成为全球领先的AIoT产品与技术服务解决方案提供商。把 “赋能万物,机器智能” 作为核心价值观。相信所秉承的 “星球万物,智慧物联” 的使命,会持续为客户创造长期价值。
展开
-
c语言-遍历结构体里的数组元素
遍历结构体里的数组元素的三种方法//设计一个描述商品的结构体,存放一个商品信息,并显示#include<stdio.h>struct goods{ char name[10];//10 int date;//4 char quality[10];//10 float price;//4};struct goods str[5]={ {"yanlu ",20201211,"514years",100},...转载 2021-04-28 18:53:16 · 2310 阅读 · 0 评论 -
C语言中定义bool类型
C语言里面是没有bool(布尔)类型的,C++里面才有,这就是说,在C++里面使用bool类型是没有问题的。bool类型有只有两个值:true =1 、false=0。不过 C语言中可以自己定义咯 #define bool char #define ture 1 #define false 0————————————————版权声明:本文为CSDN博主「七 六 伍」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。...转载 2021-04-28 18:50:48 · 3595 阅读 · 0 评论 -
C/C++中static关键字及变量存储位置总结
今天看博文时,看到了c++的static关键字的一些总结,还涉及到了一些代码的存储位置,为了有时间的时候能够看一下,还是自己把它给摘抄下来吧。C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: ...转载 2021-02-03 14:59:05 · 731 阅读 · 0 评论 -
linux添加新磁盘并挂载
目录文章目录linux添加新磁盘并挂载 目录 查看硬盘及分区信息 操作/dev/sdb分区 格式化/dev/sdb1 挂载分区到指定目录 验证下是否挂载成功 设置开机自动挂载 查看硬盘及分区信息fdisk -l1上图即是我执行完命令后的截图,可以看到我的我有两块盘,一块是/dev/sda,大小为40G,另一块是/dev/sdb,大小为100G,/dev/sdb为新添加的磁盘,接下来将/dev/sdb进行分区操作/dev/sdb分区..转载 2021-02-03 14:36:50 · 278 阅读 · 0 评论 -
vscode 跳转到指定的行数的快捷键
在工作中,尤其是容易产生错误的 js 代码,报错之后会提示有错误代码的位置,也就是在哪一行出问题了,在vscode 编辑器中,可以使用快捷键 跳转到指定的行数:快捷键: Ctrl + G ,然后在弹出的框中输入行数就可以了;...转载 2021-02-02 11:02:28 · 1809 阅读 · 0 评论 -
I/O 多路复用之 Event Poll
概述由于 poll() 和 select() 的局限,Linux 2.6内核引入了 event poll(epoll) 机制。虽然 epoll 的实现比 poll() 和 select() 要复杂得多,epoll 解决了前两个存在的基本性能问题,并增加了一些新的特性。对于poll() 和 select(),每次调用时都需要所有被监听的文件描述符列表。内核必须遍历所有被监视的文件描述符。当这个文件描述符列表变得很大时——包含几百个甚至几千个文件描述符时——每次调用都要遍历列表就变成了规模上的瓶颈.转载 2021-02-02 10:54:52 · 367 阅读 · 0 评论 -
几种从stdin读入字符串的方式
gets函数原型:char * gets ( char * str );返回值:读入成功,返回与参数buffer相同的指针;读入过程中遇到EOF或发生错误,返回NULL指针。所以在遇到返回值为NULL的情况,要用ferror或feof函数检查是发生错误还是遇到EOF。功能:从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为'\0'空字符,并由此来结束字符串。注意:本函数可以无限转载 2020-06-28 14:31:30 · 1612 阅读 · 0 评论 -
linux数组清零函数
bzero(buff,20);memset(buff,0,20);//给buff全部置零转载 2020-06-28 10:32:31 · 486 阅读 · 0 评论 -
ubuntu18.04 libusb安装与调试
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/gd6321374/article/details/79903132一、前言:在这家公司真的多个平台都搞过了,最近,销售接了个单,客户是个台湾佬,客户这家公司也是他们瑞士代工厂之一。其中要求我们提供产品的二次开发包...转载 2019-11-13 16:28:12 · 2327 阅读 · 0 评论 -
ubuntu 16.04 源代码安装libusb
libusb是一个跨平台的usb通讯库;https://libusb.info/在ubuntu16上安装1. 首先安装libudev-devsudo apt-get installlibudev-dev2. 下载源码并解压tar -xjf libusb-1.0.22.tar.bz23. 编译安装cdlibusb-1.0.22sudo ./configu...转载 2019-11-13 16:25:43 · 603 阅读 · 0 评论 -
linux C之stat()
头文件#include #include 定义函数:int stat(const char *file,struct stat *buf);函数说明:通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值:执行成功则返回0,失败返回-1,错误代码存于errnoerrno:ENOENT 参数file_name指定的文件不存在转载 2017-12-07 10:43:26 · 2071 阅读 · 0 评论 -
GTK调用mplayer
Gtk中调用Mplayer一、Mplayer1. 什么是MplayerMplayer是Linux下的多媒体播放器,它使用简单,对常见的视频、音乐格式都支持得不错。2. 为什么使用MplayerLinux下的多媒体播放器主要用xine, mplayer, gstreamer,它们各有常处1) mplayer安装使用都很方便,一般通转载 2018-01-08 14:51:50 · 1295 阅读 · 0 评论 -
Linux下c语言简单实现播放wav
Linux下的声音设备编程比大多数人想象的要简单得多。一般说来,我们常用的声音设备是内部扬声器和声卡,它们都对应/dev目录下的一个或多个设备文件,我们象打开普通文件一样打开它们,用ioctl()函数设置一些参数,然后对这些打开的特殊文件进写操作。 由于这些文件不是普通的文件,所以我们不能用ANSI C(标准C)的fopen、fclose等来操作文件,而应该使用系统文件I/O处理函数(ope转载 2018-01-08 14:16:12 · 6018 阅读 · 2 评论 -
声卡驱动
出于对安全性方面的考虑,Linux下的应用程序无法直接对声卡这类硬件设备进行操作,而是必须通过内核提供的驱动程序才能完成。在Linux上进行音频编程的本质就是要借助于驱动程序,来完成对声卡的各种操作。对硬件的控制涉及到寄存器中各个比特位的操作,通常这是与设备直接相关并且对时序的要求非常严格,如果这些工作都交由应用程序员来负责,那么对声卡的编程将变得异常复杂而困难起来,驱动程序的作用正是要屏蔽硬转载 2018-01-08 14:24:08 · 502 阅读 · 0 评论 -
Linux C Strtok函数
Strtok()函数详解:该函数包含在“string.h”头文件中函数原型:char * strtok(char* str,constrchar* delimiters);函数功能:切割字符串,将str切分成一个个子串函数参数:str:在第一次被调用的时间str是传入需要被切割字符串的首地址;在后面调用的时间传入NULL。delimiters:表示切割字符串(字符串转载 2017-12-07 19:25:51 · 418 阅读 · 0 评论 -
Linux C读取文件内容
#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>int read_file( char *filename, int *len, char *...转载 2018-03-26 09:54:12 · 7516 阅读 · 4 评论 -
C使用libcurl库发送http请求
C++要实现http网络连接,需要借助第三方库,libcurl使用起来还是很方便的环境:win32 + vs2015如果要在linux下使用,基本同理1,下载编译libcurl下载curl源码,找到vs工程,按照x86 x64 并对应debug和release编译出静态库lib2,构建工程1)curl头文件和lib拷贝到工程目录2)配置附加包含目录libcurl中的include和附加库目录lib...转载 2018-03-26 14:28:16 · 2134 阅读 · 0 评论 -
linux C 条件变量使用记录
条件变量是实现线程间同步的一种方法,条件变量用来自动阻塞一个线程,直到收到收到一个cond信号或其它特殊情况发送,条件变量使用的时候必须与互斥量同时使用,这是为了保证条件量在线程间操作的“原子性”。1、创建一个条件变量cond:int pthread_cond_init(pthread_cond_t * cond, const pthread_condattr_t * attr);在初始化一个条件...转载 2018-04-14 13:55:37 · 235 阅读 · 0 评论 -
Linux多线程互斥锁
互斥锁 多线程编程中,(多线程编程)可以用互斥锁(也称互斥量)可以用来保护关键代码段,以确保其独占式的访问,这有点像二进制信号量。POSIX互斥锁相关函数主要有以下5个:[cpp] view plain copy#include <pthread.h> int pthread_mutex_init(pthread_mutex_t *mutex, const pthrea...转载 2018-04-14 14:02:27 · 546 阅读 · 0 评论 -
在linux中用C语言实现ping命令
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010979030/article/details/50593678运用C语言编写模拟常用网络命令ping命令实现一个基于linux原始套接字和ICMP协议的ping程序。该程序能用于检测主机或路由器工作是否正常。程序中主要的函数void alarm_handler(int); /*SIGALRM处...转载 2018-04-14 14:16:55 · 440 阅读 · 0 评论 -
Qt之QTableWidget详细使用
一、QTableWidget简介QTableWidget是QT对话框设计中常用的显示数据表格的控件。QTableWidget继承于类QTableView,所以在学习QTableWidget之前可以先看一下QTableWidget,他们两者的区别是:QTableView可以使用自定义的数据模型来显示内容(也就意味着使用时先要通过setModel来绑定数据源),而QTableWidget则只能使用标准...转载 2018-04-09 16:08:07 · 7943 阅读 · 2 评论 -
C++ TCP socket心跳包示例程序
在做游戏开发时,经常需要在应用层实现自己的心跳机制,即定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性。在TCP socket心跳机制中,心跳包可以由服务器发送给客户端,也可以由客户端发送给服务器,不过比较起来,前者开销可能更大。—— 这里实现的是由客户端给服务器发送心跳包,基本思路是:1) 服务器为每个客户端保存了IP和计数器count,即map<fd, pa...转载 2018-04-09 19:56:14 · 13768 阅读 · 4 评论 -
计算时间差C语言实现
// TimeTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <windows.h>#include <cmath>#include <ctime> #include <stdio.h>#include<time.h>#include "math.h"//计算给定的时间转载 2018-03-27 17:07:40 · 2830 阅读 · 0 评论 -
sockaddr_in结构体操作
sockaddr结构体sockaddr的缺陷: struct sockaddr 是一个通用地址结构,这是为了统一地址结构的表示方法,统一接口函数,使不同的地址结构可以被bind() , connect() 等函数调用;sa_data把目标地址和端口信息混在一起了struct sockaddr { unsigned short sa_family; char sa_data[14];...转载 2018-04-10 09:55:10 · 649 阅读 · 0 评论 -
C/C++ 字节存储排序:大端和小端的判别及转换
当前的存储器,多以byte为访问的最小单元,当一个逻辑上的地址必须分割为物理上的若干单元时就存在了先放谁后放谁的问题,于是端(endian)的问题应运而生了,对于不同的存储方法,就有大端(big-endian)和小端(little- endian)两个描述。字节排序按分为大端和小端,概念如下大端(big endian):低地址存放高有效字节小端(little endian):低字节存放地有效字节现...转载 2018-04-10 13:43:15 · 1267 阅读 · 0 评论 -
C/C++读写配置文件
用C写了个加载配置文件的demo简单程序, 按行支持 key=val 的格式以及行注释/文本注释等。以下贴下代码, 纯当笔记:[cpp] view plain copy#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_BUF_LEN 1024 #define ...转载 2018-04-03 14:07:16 · 1338 阅读 · 0 评论 -
C语言多任务,多进程,多线程
多任务的概念人们已经非常熟悉了,它是指用户可以在同一时间内运行多个应用程序。Linux就是一种支持多任务的操作系统,它支持多进程、多线程等多任务处理和任务之间的多种通信机制。Linux下多任务机制的介绍多任务处理是指用户在同一时间内运行多个应用程序,每个应用程序被称做一个任务。Linux就是一个支持多任务的操作系统,它比单任务系统的功能增强了许多。当多任务操作系统使用某种任务调度策略允许两个或更多...转载 2018-04-03 15:44:08 · 6498 阅读 · 0 评论 -
什么是进程,什么是线程,什么时候用进程,什么时候用线程
什么是进程什么是线程?进程是指在系统中正在运行的一个应用程序;程序一旦运行就是进程进程可以认为是程序执行时的一个实例。进程是系统进行资源分配的独立实体, 且每个进程拥有独立的地址空间。一个进程无法直接访问另一个进程的变量和数据结构, 如果希望让一个进程访问另一个进程的资源,需要使用进程间通信,比如:管道,文件, 套接字等。一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。 线程与进程的一个...转载 2018-04-03 15:50:44 · 3260 阅读 · 1 评论 -
C语言server程序,支持多个client同时连接,为每一个client分配一个进程
/*server.c*/#include<sys/socket.h>#include<stdio.h>#include<stdlib.h>#include<errno.h>#include<memory.h>#include<sys/mman.h>#include<sys/types.h>#include&转载 2018-04-03 16:05:06 · 2348 阅读 · 0 评论 -
用C++实现一个多进程回显服务器
用C++实现一个多进程回显服务器 本案例将用多进程实现一个基于Linux使用C++实现的C/S网络程序:客户端从终端输入,然后借助服务端回显。进而观察TCP的状态转换图,思考多进程网络编程存在的问题。1. 服务端程序(Linux) 服务进程:通过监听所有网卡的9877接口,当有客户端来连接时,使用fork创建一个子进程对客户端连接进行服务,然后父进程继续监听连接的到来。需...转载 2018-04-03 16:12:50 · 253 阅读 · 0 评论 -
多进程多线程
(转自http://programmerdigest.cn/2010/08/1096.html,其中的实验数据重新做过测试,在语言上也有所修改)在Unix上编程采用多线程还是多进程的争执由来已久,这种争执最常见到在B/S通讯中服务端并发技术 的选型上,比如WEB服务器技术中,Apache是采用多进程的(perfork模式,每客户连接对应一个进程,每进程中只存在唯一一个执行线 程),Java的Web...转载 2018-04-03 16:53:20 · 305 阅读 · 0 评论 -
Linux C获取文件长度和全部内容
FILE*fp; fp=fopen("localfile","rb");// localfile文件名 fseek(fp,0L,SEEK_END); /* 定位到文件末尾 */ flen=ftell(fp); /* 得到文件大小 */ p=(char *)malloc(flen+1); /* 根据文件大小动态分配内存空间 */ if(...转载 2018-03-28 15:57:42 · 5440 阅读 · 0 评论 -
c++线程创建与传参
程序如下void* thread_rountine(void *arg){ int *cnt = (int*)arg; for (int i=0; i<5; ++i) printf("%d-hello\n",*cnt); return 0;}int main(void){ pthread_t pid[2]; int ret;...转载 2018-04-11 09:36:34 · 822 阅读 · 1 评论 -
TCP socket心跳包示例程序
在做游戏开发时,经常需要在应用层实现自己的心跳机制,即定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性。在TCP socket心跳机制中,心跳包可以由服务器发送给客户端,也可以由客户端发送给服务器,不过比较起来,前者开销可能更大。—— 这里实现的是由客户端给服务器发送心跳包,基本思路是:1) 服务器为每个客户端保存了IP和计数器count,即map<fd, pa...转载 2018-04-11 14:39:25 · 715 阅读 · 0 评论 -
Socket send函数和recv函数详解
Socket send函数和recv函数详解1.send 函数int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。 该函数的第一个参数指定发...转载 2018-04-11 14:44:45 · 133 阅读 · 0 评论 -
C++数值类型与string的相互转换
C++数值类型与string的相互转换1.数值类型转换为string1.1使用函数模板+ostringstream使用函数模板将基本数据类型(整型、字符型、实型、布尔型)转换成string。123456789101112//ostringstream对象用来进行格式化的输出,常用于将各种类型转换为string类型//ostringstream只支持<<操作符template<ty...转载 2018-04-11 14:52:46 · 329 阅读 · 0 评论 -
Makefile使用总结
1. Makefile 简介Makefile 是和 make 命令一起配合使用的.很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂.Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些日常操作. 这个需要大家发挥自己的想象力. 本篇博客是基于 {精华} 跟我一起写 ...转载 2018-04-11 14:55:05 · 194 阅读 · 0 评论 -
Linux C实现ping命令
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010979030/article/details/50593678运用C语言编写模拟常用网络命令ping命令实现一个基于linux原始套接字和ICMP协议的ping程序。该程序能用于检测主机或路由器工作是否正常。程序中主要的函数void alarm_handler(int); /*SIGALRM处...转载 2018-04-11 16:27:54 · 2361 阅读 · 0 评论 -
linux下ping C语言实现
linux下ping的C语言实现 1 #include <stdio.h> 2 #include <signal.h> 3 #include <arpa/inet.h> 4 #include <sys/types.h> 5 #include <sys/socket.h> 6 #include <unistd.h...转载 2018-04-11 16:30:26 · 639 阅读 · 0 评论 -
linux找不到动态库链接文件.so的解决方法
如果使用自己手动生成的动态链接库.so文件,但是这个.so文件,没有加入库文件搜索路劲中,程序运行时可能会出现找不到动态链接库的情形。可以通过ldd命名来查看可执行文件依赖的动态链接库,如下(其中D为可执行程序): 其中的libjson_linux-gcc-4.6_libmt.so cannot found。解决这个问题: (1)在系统中查找这个文件(当然要保证系统中已经有这个.so文件,只是查找...转载 2018-04-04 15:06:12 · 649 阅读 · 0 评论