C语言编程
文章平均质量分 57
mtOS1573
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
arm编译器__packed 与gcc packed
#include <stdio.h>#include <linux/tcp.h>#include <linux/ip.h>#include <linux/ipv6.h>#include <linux/if_ether.h>/* ipv4 test vector */static struct { struct ethhdr eth; struct iphdr iph; struct t.原创 2021-01-03 19:30:59 · 735 阅读 · 0 评论 -
build your own linux os kernel
https://wiki.centos.org/zh/HowTos/BuildingKernelModules 本教学文档以 CentOS-5 作为样例操作系统。在某些情况下你也许会需要更改或创建一个新的内核模块。也许你要加入某个功能,或者只是做一个修正。在这件教学文档内,我们会尝试将一个错误修正加进现有的模块内,然后安装它。这里假设你已经安装了整个内核的源代码。如果你是按照「我需要内核的源代码」的第 2 部份,它会位於 ~/rpmbuild/BUILD/kernel-3.10.0/li..转载 2021-01-03 19:22:10 · 1339 阅读 · 0 评论 -
编译linux overlayfs模块
当我们需要使用一个内核模块的时候,在当前使用版本内核编译的时候又没有加进去,在不改变内核版本的时候,再编译整个内核,可能会覆盖原来的内核,导致系统无法启动现在我们能够单独选择需要的模块,然后加载进内核准备工作首先进入你当前使用的系统查看当前的使用内核版本,在这里是 2.3.39下载对应内核源码包 linux-2.6.39.tar.bz2 将源码包放入 /usr/src/ 下解压...原创 2020-04-12 21:09:37 · 2167 阅读 · 2 评论 -
c程序结构体讲解
1 #include 2 3 int main() 4 { 5 typedef struct A 6 { 7 int b; 8 }a;//这里a是 struct A类型 相当于给A取别名 所以 a xx;这样声明正确 xx是a的结构体变量 9 10 typedef struct A *List;//List 是 struct A原创 2016-04-13 00:51:11 · 414 阅读 · 0 评论 -
数据结构实用概念
疑惑1、我学完了C语言,可是现在感觉还是写不出代码。2、为什么会有各种各样的程序存在?3、程序的本质是什么?程序是为了具体问题而存在的 程序需要围绕问题的解决进行设计同一个问题可以有多种解决方案如何追求程序的“性价比”?是否有可量化的方法判别程序的好坏?数据结构起源计算机从解决数值计算问题到解决生活中的问题现实生活中的问题涉及不同个体间的复杂联系需要原创 2016-04-08 18:18:38 · 490 阅读 · 0 评论 -
mongodb安装启动mongodb
Windows下安装从 2.2 开始已经不再支持 Windows XP。Windows Server 2008 R2 或 Windows 7下需要安装一个补丁: DOS 错误代码时使用 FlushViewOfFile() 函数,在 Windows 7 中,或在 Windows Server 2008 R2 中清除内存内存映射文件安装下载从转载 2016-03-20 17:50:07 · 516 阅读 · 0 评论 -
返回单链表的倒数第n个节点
struct list_node { struct list_node *next; void *data;};/*这个函数的名字起得不是特别的好。功能就是返回单链表倒数第n个节点。参数说明:struct list_node *head:单链表头指针unsigned int pos:倒数的个数*/struct list原创 2016-02-23 11:52:53 · 1450 阅读 · 0 评论 -
Linux 线程同步的三种方法
线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。一、互斥锁(mutex)通过锁机制实现线程间的同步。初始化锁。在Linux下,线程的互斥量数据类型是pthread_mutex_t。在使用前,要对它进行初始化。静态分配:pthread_mutex_t mutex =转载 2016-02-17 19:35:31 · 393 阅读 · 0 评论 -
opencv编程
设置opencv SDK解压目录,点击Extract后解压 我是习惯于解压到这个位置的。解压过程如上图。2、 文件目录介绍解压后会在目录下生成opencv的文件夹 在opencv文件夹下有build和sources两个文件夹,build是SDK 包,sources是源码包(里面也有opencv使用例子源码)转载 2014-12-14 21:04:31 · 758 阅读 · 0 评论 -
简单的网络通信程序,客户端发送hello,server 服务器反馈 ok UDP
/******************************The UDP c code client *************************************/#include #include #include #include #include #include #include #define PORT 1573void createConne原创 2016-01-04 23:42:07 · 1115 阅读 · 0 评论 -
简单的网络通信程序 TCP
/*server*/#include #include #include #include #include #include int main(){ int sockfd = socket(PF_INET,SOCK_STREAM,0); if(sockfd == -1) perror("socket"),exit(-1); struct sockaddr_in addr原创 2016-07-15 21:19:06 · 2057 阅读 · 0 评论 -
一个 Linux 上分析死锁的简单方法
介死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。 由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程(线程)在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现转载 2016-10-02 15:55:38 · 3733 阅读 · 0 评论 -
C语言删除数组指定元素
#include // 删除长度为len的数组dat中索引为idx的元素。void remove(int *dat, int *len, int idx){ (*len)--; if (idx = *len) return; for (int i = idx; i dat[i]原创 2018-01-02 11:18:19 · 27351 阅读 · 0 评论 -
Installation of DocBook XML DTD
Introduction to DocBook XML DTD The DocBook XML DTD-4.5 package contains document type definitions for verification of XML data files again...原创 2018-06-10 21:38:04 · 1111 阅读 · 0 评论 -
Linux内核0.11——内核体系结构
Linux内核体系结构linux内核主要由五部分组成:进程调度模块、内存管理模块、文件系统模块、进程间通信模块、网络接口模块。如上图包括了各个部分的依赖关系,也大概表明了其在内核目录中的分布,其中进程调度模块是比较重要的一部分,所有模块都和它存在着依赖关系,相当于一个计算机资源的总管家。内存管理和使用这一部分不太好理解,建议多看几遍书,这里说一些我对书上的理解。从上面这个物理内存分...转载 2019-03-21 12:12:03 · 275 阅读 · 0 评论 -
获取pcs工具远程分支
step 1git clonehttps://github.com/ClusterLabs/pcs.gitstep 2cd pcsstep3 git checkout tag_name 比如 git checkout 0.9.165原创 2019-04-18 14:50:57 · 169 阅读 · 0 评论 -
使用CPAN安装perl模块
CPAN可以通过网络或本地的方式安装perl的模块。网络安装:从指定ftp下载perl模块包进行安装。与python的eazy_install和RHEL的yum用途类似,但功能较弱,不能自动解决依赖关系。本地安装:cpan下载的模块包的默认目录是/root/.cpan/sources/ ,如果没有网络连接,可以将模块包放到这个目录再运行cpan安装。1. 配置CPAN的资源...原创 2019-04-30 16:59:57 · 2965 阅读 · 0 评论 -
telnet连接ubuntu
在Ubuntu下的telnet服务需要安装xinetd服务和telnetd服务 1. apt-get install xinetd 2. apt-get install telnetd 修改/etc/inetd.conf和/etc/xinetd.conf文件并创建/etc/xinetd.d/telnet 3. gedit /etc/inetd.conf 添加:telnet stream原创 2014-11-19 22:13:25 · 3120 阅读 · 1 评论 -
Linux/Unix下ODBC的安装、配置与编程
ODBC原理ODBC 是Open Database Connect 即开放数据库互连的简称,它是由Microsoft 公司于1991 年提出的一个用于访问数据库的统一界面标准,是应用程序和数据库系统之间的中间件。它通过使用相应应用平台上和所需数据库对应的驱动程序与应用程序的交互来实现对数据库的操作,避免了在应用程序中直接调用与数据库相关的操作,从而提供了数据库的独立性。ODBC 主要由驱动转载 2014-09-27 08:57:37 · 5040 阅读 · 0 评论 -
C语言头文件功能
ALLOC.H 说明内存管理函数(分配、释放等)。ASSERT.H 定义assert调试宏。BIOS.H 说明调用IBM—PC ROM BIOS子程序的各个函数。CONIO.H 说明调用DOS控制台I/O子程序的各个函数。CTYPE.H 包含原创 2012-12-04 16:19:57 · 715 阅读 · 0 评论 -
C程序设计选择结构的嵌套
嵌套形式:if() if 内层嵌套IF elseif if else ifelse ifelse ifelse if . . . .elseif() if()else原创 2012-11-24 00:02:42 · 1338 阅读 · 0 评论 -
重叠字符串
输入重叠字符串,输出组成的新的字符串。用输入的的字符串中ASCII码为偶数的字母重新组成新的字符串。输入格式为:aabbcc ddhhtt等,用户需要键入这样的字符。例如:键入aabbcc,程序结果为:b代码如下:(本程序在vs2012中调试)// 字符串偶数下标并重组字符.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#incl原创 2012-12-12 22:35:31 · 1886 阅读 · 0 评论 -
定义指针变量的方法编写任意一个数的阶乘
#include "stdio.h"void getFact(int n,int *fact)// 函数功能是计算n的阶乘,然后存到fact指向的变量里去{ int i,sum=1; if(n==1||n==0) *fact=1; for(i=1;i sum*=i; *fact=sum;}int main原创 2013-05-08 19:54:42 · 2138 阅读 · 0 评论 -
善用指针
/*指针测试*/#includeint main(){ int *p1,*p2,*tmp; int a,b; printf("请输入两个数:\n"); scanf("%d,%d",&a,&b);/* *p1=a; *p2=b;* *这两条语句写上去会发生无法访问内存的情况导致段错误*/ p1=&a;//p1是指针型变量记录了a的存储位置,使其变量a访问内存中的p1 p2=&b; if(a>b){原创 2014-02-06 14:50:59 · 594 阅读 · 0 评论 -
让vim编辑器始终有行号
Ubuntu vim经过长时间的发展,这里我发表一下个人理解,下面就这就来讲术Ubuntu vim。下文对Ubuntu vim的设置适用于Ubuntu与Fedora系统,其他系统没有得到验证在Ubuntu中vim的配置文件存放在/etc/vim目录中,配置文件名为Ubuntu vimrc在Fedora中vim的配置文件存放在/etc目录中,配置文件名为Ubuntu vimrc在终端 输原创 2014-02-06 14:58:38 · 733 阅读 · 0 评论 -
Ubuntu系统安装谷歌拼音
在window下用惯了google拼音输入法,也想在ubuntu下使用google 拼音输入法。这里只是介绍在中文Ubuntu 系统下中文拼音输入法的安装。一般ubuntu12.04 版本已默认安装好了iBus框架。若没有安装iBus框架,可以自己安装IBus框架,在终端输入以下命令:[plain] view plaincopys原创 2014-03-02 22:10:11 · 1011 阅读 · 0 评论 -
设置Linux内核参数 /etc/sysctl.conf
设置Linux内核参数 /etc/sysctl.conf 配置 Linux 内核参数修改后不用重启动更新: /sbin/sysctl -p 打开/etc/sysctl.conf 复制如下内容 kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128转载 2014-03-10 22:36:38 · 1824 阅读 · 0 评论 -
memset用法详解
功 能 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。[编辑本段]用 法 void *memset(void *s, int ch, unsigned n);[编辑本段]程序例 #include原创 2014-05-02 22:57:35 · 648 阅读 · 0 评论 -
浅谈c语言typedef 与结构体指针(个人小经验)
#include#includetypedef struct emp{ char sex[8]; char name[15]; int age;}*emp;//这里我们用typedef把emp这个结构体变成了*emp这种指向结构体成员的结构体指针/*typedef struct emp{ char sex[8]; char name[15]; int原创 2014-05-02 20:00:02 · 2992 阅读 · 0 评论 -
Ubuntu 13.04下构建Qt5开发环境
虽然Qt命运多舛,但是也阻挡不了程序员对它的喜爱。经历了一系列波折之后,现在到在芬兰公司Digia手中,Qt又将迎来一个发展。Qt5就是在这种情况之下发布的。正值Ubuntu刚刚发布了13.04版,我就在这个环境下尝试配置Qt5的开发环境,并记录下来,给有同样需要的朋友作为参考。1. 如果要使用Qt的商业版,需要向Digia公司(http://qt.digia.com/)购买授权,但是原创 2014-03-26 21:44:57 · 1338 阅读 · 0 评论 -
memcpy,strcpy,memset的函数实现
memcpy,strcpy,memset的函数实现 /**********************************************************公司考试这种题目主要考你编写的代码是否考虑到各种情况,是否安全(不会溢出)各种情况包括:1、参数是指针,检查指针是否有效2、检查复制的源目标和目的地是否为同一个,若为同一个,则直接跳原创 2014-07-03 17:04:32 · 548 阅读 · 0 评论 -
Linux下GCC降低版本
1.从官网下载GCC合适的版本,http://gcc.gnu.org,由于这里不支持4.5及以上,我就选了4.5以下的最高版本4.4.6,有gcc-4.4.6.tar.gz和gcc-4.4.6.tar.bz2两种包,按个人喜好选了第一种;2.解包#tar zxfv gcc-4.4.6.tar.gz3.进入解压目录,我的是~/local/gcc-4.4.6原创 2014-05-29 23:56:52 · 2464 阅读 · 0 评论 -
Windows下tuxedo安装及测试
一、获取安装文件和license 下载Tuxedo For Windows版本和License文件,本机采用的是Tuxedo10 windows版本。具体 Windows安装过程略。正常安装后Tuxedo会建一个tlisten的服务,且已自动启动。 本机Tuxedo安装路径 d:\bea10\tuxedo10.0_VS2005 二、Tuxedo安装完成后的环境变量配置原创 2014-08-19 20:48:35 · 1566 阅读 · 0 评论 -
libc.so.6
libc.so.6是一个类似于WINDOWS下的一个快捷指向型的文件。 用命令LN产生: ln -s /root/arm-unknown-linux-gnu/arm-unknown-linux-gnu/lib/libc.so /root/workspace/JNI/jni/libaddjni/libc.so.6 ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一原创 2014-08-09 20:31:26 · 4712 阅读 · 0 评论 -
Ubuntu 14.04(32位)安装Oracle 11g(32位)全过程
1.将系统更新到最新: sudo apt-get update sudo apt-get dist-upgrade 2.安装Oracle所需的依赖包: sudo apt-get install automake sudo apt-get install autotools-dev sudo apt-get install binutils sudo apt-原创 2014-08-16 18:38:51 · 2590 阅读 · 0 评论 -
_tmain与main的区别
用过C的人都知道每一个C的程序都会有一个main(),但有时看别人写的程序发现主函数不是int main(),而是int _tmain(),而且头文件也不是而是,会困惑吧?一起来看看他们有什么关系吧 首先,这个_tmain()是为了支持unicode所使用的main一个别名而已,既然是别名,应该有宏定义过的,在哪里定义的呢?就在那个让你困惑的里,有这么两行#include #in转载 2012-11-09 16:42:07 · 465 阅读 · 0 评论
分享