Linux c
Janskid
这个作者很懒,什么都没留下…
展开
-
curl&&openssl编译(x86)
1、解压openssl至目录/home/yk/openssl/openssl-1.0.2h2、进入目录/home/yk/openssl/openssl-1.0.2h3、mkdir yk3399_openssl4、./config -fPIC no-shared --prefix=/home/yk/openssl/openssl-1.0.2h/yk3399_openssl --openssldir=/home/yk/openssl/openssl-1.0.2h/yk3399_openssl5、ma原创 2021-08-27 19:32:40 · 522 阅读 · 0 评论 -
Linux信号处理(多线程应用场景)
转载:https://blog.csdn.net/yangruibao/article/details/13292511转载 2020-05-04 14:51:11 · 307 阅读 · 0 评论 -
strncpy踩过的坑
一、表象下面这段代码的for循环,不进入循环,断点检查list里边是有元素的。 FOR_EACHDATA_INLIST(&Cfg_GetPtzMng()->stPresetList, pstPresetNode, stIterator) { if(pstPresetNode->ucUseFlag == 0) { ...原创 2020-01-18 11:14:02 · 597 阅读 · 0 评论 -
回调函数场景
使用方法:1.一般先定义一个回调函数:常用定义 typedef void (*Fuc)(int c,int d); 可看作是定义了一个变量类型(int/char/double)Fuc fuc; fuc还是个未初始化的对象,后边需要借助函数指针进行初始化;2.在定义一个 void test(int a,int b);3.定义调用函数:int G...原创 2019-10-29 14:51:46 · 264 阅读 · 0 评论 -
聊天室项目
1、简述: 采用了cs结构 服务器端四步走:socket,bind,listen,accept 客户端两步走:socket,connect 简单模型:客户端a消息发送到服务器;服务器找到客户端b的socket,在把消息发送给客户端b; 设计数据库操作存储的一些操作比较简单这里不提 2、看代码: (1)、服务器端代码#include <sys/types.h>#include <sys原创 2017-09-13 20:58:45 · 2347 阅读 · 1 评论 -
进程间通信-----共享内存
共享内存 (1)、概念: 共享内存是被多个进程共享的一部分物理内存。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。 (2)实现 1_创建共享内存:int shmget(key_t key, int size, int shmflg)参数解释: key: 1、0/IPC_PRIVATE:当key的取值为IPC原创 2017-08-15 20:32:26 · 348 阅读 · 0 评论 -
进程间通信-----管道
1、概念:一个进程将它的数据发送给另一个进程2、管道通信2.1、概念: 管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道尾部写入数据,另一个进程(读进程)从管道的头部读出数据。2.2:简单的程序间的数据传输 popen 两个程序之间传递数据的一种简单方法是使用popen和pclose。格式:FILE *popen(const char *comm原创 2017-08-14 20:58:34 · 273 阅读 · 0 评论 -
static的用法
1、static修饰局部变量:在局部静态变量前面加上关键字static,该局部变量便成了静态局部变量。静态局部变量有以下特点:(1)该变量在全局数据区分配内存(2)如果不显示初始化,那么将被隐式初始化为0(3)它始终驻留在全局数据区,直到程序运行结束(4)此变量在函数运行结束的时候没有被销毁还是存在的;退出一个块之后仍然存在的局部变量2、static 修饰全局变量:在全原创 2017-08-07 09:38:45 · 494 阅读 · 0 评论 -
多线程基础
前言:你需要知道多线程可以公用全局变量直接进行通信;Linux进程创建一个新线程时,线程将拥有自己的栈(因为线程有自己的局部变量),但与它的创建者共享全局变量、文件描述符、信号句柄和当前目录状态。1、概念 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可原创 2017-08-20 19:01:36 · 254 阅读 · 0 评论 -
一些函数、指针、const、结构体、extern零散整理
啥时候用指针作为函数名,函数参数;————————当主函数当中的实参是数组,或者字符串的时候,这些实参因为是以数据集合存在的,量比较大,所以是不能一下子传递过来的,这时候就函数的形参就用指针来表示,把实参通过地址传递过去,用指针来遍历实参数组,字符串的地址--进而遍历他们内存上的数据;原创 2017-07-19 20:52:34 · 400 阅读 · 0 评论 -
c 语言中一些特殊函数的整理
1、gets( )函数//gets认为回车是输入结束标示,空格不是输入结束标示,所以用gets这个函数就可以实现输入带空格的字符串//gets和scanf一样存在缓冲区溢出的问题int main(){char ch[100] = {0};gets(ch);int len = 0;while (ch[len])len++;printf ("原创 2017-07-19 17:32:26 · 668 阅读 · 0 评论 -
用指针来完成“you are from shanghai”逆序
//用指针的方式来逆序,再逆序;#include#includeint main(){ char a[] = "you are frome shanghai"; char temp; char *p1 = a; char *p2 = a + strlen(a) - 1; //找到尾指针;//将整个字符串逆序; while(p1 < p2)原创 2017-07-16 20:32:23 · 309 阅读 · 0 评论 -
C语言main函数标准格式:int main(int argc, char * argv[]);
int main(int argc,char *argc[]){ int i; for(i = 0;i < argc;i++) { printf("%s\n",argv[i]); } return 0;} 标准的main函数格式为:int main(int argc, char * argv[]);原创 2017-07-12 19:06:40 · 1637 阅读 · 0 评论 -
进程控制-------僵尸进程、守护进程
1、终止进程: 终止函数:exit()和_exit() 区别: (1)exit在关闭进程时候会让缓冲区数据会自动写回并关闭未关闭的文件 (2)_exit 是直接清空缓冲区然后退出; 一般都用前者,就不详细说了; 正是由于父亲儿子进程的终止所以有了僵尸进程,守护进程(后台执行)2、僵尸进程(子进程先终止): 就是子进程先于父进程退出,父进程还不采取任何措施来处理挂掉的子进程,从而形成了僵原创 2017-08-10 15:00:21 · 469 阅读 · 0 评论 -
进程控制------基础、fork、exec、system
1、什么是进程?区分程序 进程是指程序执行的可执行文件;而程序是存放到磁盘的可执行文件;2、进程的一些特性: (1)动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的 (2)并发性:任何进程都可以同其他进程一起并发执行 (3)独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位 (4)异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自原创 2017-08-10 14:48:19 · 421 阅读 · 0 评论 -
文件编程-------------通过偏移指针(lseek)设置固定大小的文件
1、操作:通过lseek设置一个固定大小的文件: 2、思路:创建一个文件,偏移指针指向你想要大小的那个位置,至少理论上是行得通的,是可以开辟一个这么大的文件的! 这时候你需要想到的是:当你的程序运行结束的时候偏移指针随着程序的结束而消失,而往文件里面写入东西是不会随着程序的结束而结束的,所以想到在想要大小的那个位置卡一个字母,也就是在那个位置先偏移指针指向他然后再写入一个字母,这样一个固定大小原创 2017-08-09 19:13:55 · 2092 阅读 · 0 评论 -
文件编程----------write和复制操作
1、Write(写)系统调用向打开的文件写数据,顾名思义往文件写东西,这里也是需要缓冲区,获取你要写的东西到缓冲区,再从缓冲区写入到文件当中;这里write往文件写数据是通过二进制的形式写的; (1)、write()格式:#include <unistd.h>ssize_t write(int fd, const void *buf, size_t count); 各参数及返回值的含义如下:原创 2017-08-08 20:10:51 · 574 阅读 · 0 评论 -
冒泡排序从小到大,并且数值通过传参传入。
#include#includeint main(int argc,char *argv[]){ int i,j; float a[100]; float temp; for(i = 1;i < argc;i++) { //printf("%6s",argv[i]); //把你输入的argc个字符串打印出来,可有可无的东原创 2017-07-12 20:21:23 · 529 阅读 · 0 评论 -
有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.
#include#define n 100int main(){ int i,k,count; int a[n]; for(i = 0;i < n;i++) { a[i] = i + 1; } i = 0; k = 0; //读数 count = 0; /*******原创 2017-07-11 19:17:04 · 1345 阅读 · 2 评论