![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux&&C
文章平均质量分 63
li_zs
这个作者很懒,什么都没留下…
展开
-
sed使用心得
转自:http://blog.itpub.net/519536/viewspace-558364/ 作者:secoolersed 是一种UNIX/LINUX 平台下的轻量级流编辑器,日常一般用于处理文本文件。sed 有许多很好的特性。首先,它相当小巧;其次, sed 可以配合强大的 shell 完成许多复杂的功能。在我看来,sed完全可以看成一个脚本解释器,用类似于编程的手段完成许转载 2015-04-27 18:30:51 · 581 阅读 · 0 评论 -
C语言文件简介
C语言二进制文件与文本文件简单理解 C语言把文件看成是一个字符的序列,由一个一个字符排列组成。根据其组织方式的不同分为ASCII文件(文本文件)和二进制文件。文本文件每一个字节存放一个ASCII代码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。比如10000吧,在内存中占两个字节,按ASCII输出则占5个字节,按二进制输出只占两个字节。ASCI原创 2013-08-22 20:29:58 · 1599 阅读 · 0 评论 -
C语言可变参数解析
C语言可变参数解析 C语言中有许多函数的参数个数是可变的,例如printf函数,它有printf("%d",a),printf("%d%d",a,b)等等,它的定义是这样的: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法:原创 2013-08-10 10:47:28 · 1150 阅读 · 0 评论 -
C语言字符串温习
#include#includeint main(){ /*字符串strcpy使用,将指针b的内容复制给数组a*/ char a[20]; char *b="I am a boy!"; /*strcpy函数的参数为两个指针, 数组作为函数参数传递时自动退化为相同类型的指针*/ strcpy(a,b); printf("%s\n",a); return原创 2013-06-19 17:10:12 · 795 阅读 · 0 评论 -
C语言 typedef用法
C语言 typedef用法 由于前几天没网,并没有把前十天的学习情况写入博客! typedef:为一个现有类型创建一个别名,并不是创建新类型。可以隐藏笨拙的语法构造以及平台相关的数据类型。这样就增强了程序的可移植性与可维护性。 1.创建易于记忆的类型名。typedef int sizesize a;相当于int a; 2.掩饰符合类型,常用于指针与数组。ty原创 2013-08-03 10:23:52 · 1201 阅读 · 0 评论 -
C语言排序(摇摆冒泡排序)
今重温了C语言的冒泡排序,自己也写了一个摇摆冒泡排序的算法。对一个具有20个元素的数组排序,代码如下: #includemain(){int a[20];int i,j,n;printf("请输入20个整形数据:\n");for(i=0;i<20;i++) scanf("%d",&a[i]);for(j=0;j<10;j++){for(i=j;i<=18-j;i++){i原创 2013-05-27 16:40:02 · 1144 阅读 · 0 评论 -
Linux socket编程基础
Linux socket编程基础一、基础知识1.主机字节序和网络字节序 主机字节序即内存中存储字节的方式,分为大端序和小端序。何为大端、小端呢?小端:将低字节存储在低地址。大端:将高字节存储在低字节。网络中在处理多字节顺序时一般采用大端序。这也就是说我们在网络传输时需要把做一个主机字节序到网络字节序的转换,实现函数如下:#include uint16_t htons(原创 2013-09-21 11:25:21 · 1351 阅读 · 4 评论 -
Linux 进程之wait,waitpid讲解
Linux 进程之wait,waitpid讲解 一个进程在终止时会关闭所有文件描述符,释放在用户空间分配的内存,但它的PCB还保留着,内核在其中保存着一些信息:如果是正常终止则保存着退出状态,如果是异常终止则保存着导致该进程终止的信号是哪个。这个进程的父进程可以调用wait或waitpid获取这些信息,然后彻底清除掉这个进程。我们知道一个进程的退出状态可以在Shell中用特殊变量$?查看原创 2013-09-23 19:35:45 · 2693 阅读 · 0 评论 -
Linux TCP实现简单聊天程序
Linux TCP实现简单聊天程序/*tcp_chat_server.c*/#include#include#include#include#include#include#include#include#include#define MAXBUF 1024int main(int argc,char *argv[]){ int pid; int sockfd,原创 2013-06-25 10:32:54 · 2915 阅读 · 0 评论 -
linux 从文件系统方面理解软链接、硬链接
linux 从文件系统方面理解软链接、硬链接 我们举/home/hello.c的例子从文件系统方面理解软硬链接。 文件系统中有两项与我们的软、硬链接有关,inode表和数据块。每个文件都对应一个inode,inode中存储文件的属性和15个索引项。数据块存放文件的内容。索引项指出此文件的数据块位置。若干inode组成inode表。 首先根目原创 2013-09-17 18:45:26 · 881 阅读 · 0 评论 -
函数指针与指针函数的区别
函数指针与指针函数的区别 函数指针: 关键字为指针,不过其数据访问方式为一类函数。 如:int (*math)(int,int);定义了一个指针math,它的数据访问方式为返回值为int,形参为(int,int)的一类函数。我们可以把这类函数的函数名赋值给math,这样math指针就指向了这个函数,你就可以通过(*math)(int,int)调用这个函数。代码如下:#in原创 2013-08-03 10:56:27 · 922 阅读 · 0 评论 -
C语言链表之中序表达式
C语言链表之中序表达式#include #include typedef struct s_node{ int data; struct s_node *next;}s_list;typedef s_list* link;link operater=NULL;/* operater stack*/link operand=NULL;/*operand stack*/li原创 2013-08-14 17:29:36 · 881 阅读 · 0 评论 -
C语言二叉树知识点讲解与实现代码
C语言二叉树详解原创 2013-08-17 10:55:08 · 5494 阅读 · 0 评论 -
linux 免密码免yes用户名 ssh互信建立
假设机器是 机器A与机器B在机器A上执行下列命令:1>cd ~/.ssh2>ssh-keygen -t rsa3>把产生的id_rsa.pub文件内容追加到机器B的 ~/.ssh/authorized_keys文件中4>在~/.ssh目录下 新建一个名为config的文件 文件内容是 StrictHostKeyChecking no5>vim /etc/hosts 追加上原创 2015-03-26 11:15:23 · 4593 阅读 · 0 评论 -
linux shell中"2>&1"含义
脚本是:nohup /mnt/Nand3/H2000G >/dev/null 2>&1 &对于& 1 更准确的说应该是文件描述符 1,而1一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result,然后复制标准输出到文件描述符2(STDERR_FILENO),其后果就是文件描述符1和2指向同一个文件表项,也可以说错误的输出被合并了.转载 2015-03-25 10:29:45 · 605 阅读 · 0 评论 -
linux ssh详解
转自:http://blog.lizhigang.net/archives/249linux ssh 使用深度解析(key登录详解)SSH全称Secure SHell,顾名思义就是非常安全的shell的意思,SSH协议是IETF(Internet Engineering Task Force)的Network Working Group所制定的一种协议。SSH的主要目的转载 2015-02-27 11:45:39 · 7251 阅读 · 0 评论 -
Linux 进程之fork()讲解
Linux 进程之fork()讲解#include #include #include #include int main(void){ pid_t pid; char *message; int n; pid=fork(); if(pid<0){ perror("fork"); exit(1); } if(pid==0){ message="Thi原创 2013-09-23 19:13:01 · 1519 阅读 · 1 评论 -
Linux 终端及终端登录过程简介
Linux 终端及终端登录过程简介 shell是系统的用户界面,它提供了用户与内核交互的接口。它接收用户输入的命令并把它送入内核执行,再将执行结果显示给用户。 Linux终端使用基础: 显示器和键盘合称为终端,因为它们可以对系统进行控制,所以又称为控制台(物理控制台)。如果在一台计算机上用软件的方法实现了多个互不干扰、独立工作的控制台界面,就是原创 2013-10-14 11:40:20 · 9121 阅读 · 0 评论 -
C语言 数组、字符串长度及所占内存
C语言 数组、字符串长度及所占内存 今天我们的快译通软件算是告一段落啦,把最后遇到的一个问题记录下来,也算是对自己掌握知识点含糊不清,想当然的一个教训吧! 当我们把二进制索引文件的索引头加载到内存哈希表中获取所查单词在文件中的偏移量时并没出问题,但是打印单词的解释时解释后面会有乱码。后来知道是因为"\0"的问题。 #include #include int原创 2013-09-02 20:00:09 · 12911 阅读 · 0 评论 -
Linux设备驱动开发流程
一、目的: (1)学习在 LINUX 下进行驱动设计的原理(2)掌握模块编程的框架、开发调试流程和有关的linux命令(2)掌握使用模块方式进行字符设备驱动的开发和测试的过程二、实验设备及工具(包括软件调试工具)硬件:博创2410 嵌入式实验平台、PC 机Pentium 500 以上, 硬盘10G 以上。软件:PC 机操作系统虚拟机REDHAT linux+超级终端+原创 2013-06-03 15:36:45 · 1257 阅读 · 0 评论 -
printf fprintf sprintf
printf fprintf sprintf讲解1.fprintf: frintf()用于把信息按照指定格式输出到一个文件中,fprintf(文件指针,输出格式,输出信息); 举例如下: #includeint main(){char a[40]="I am a freshman to learn";FILE *f;f=fopen("a.txt","w原创 2013-06-20 10:21:42 · 1217 阅读 · 1 评论 -
linux 函数实现ls -l命令
linux 函数实现ls -l命令#include #include #include #include #include #include #include #include #include #include int mystat(char *str);DIR *dir;struct dirent *sd;struct stat stbuf;int ma原创 2013-09-16 20:49:29 · 1910 阅读 · 2 评论 -
Linux 文件I/O(二)之 fcntl函数讲解
Linux下 fcntl函数讲解 见名知意 fcntl()属于系统调用,根据你提供的文件描述符操作文件的特性。 头文件及函数原型 #include #include int fcntl(int fd, int cmd, ... /* arg */ ); 描述 fd为一个打开的文件的文件描述符,cmd决定了此函数对文件进原创 2013-09-11 11:15:22 · 1180 阅读 · 0 评论 -
C源代码编译及加载执行过程简介
C源代码编译过程及加载执行过程 1.预处理: 读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。 1).宏定义指令,如#define Str abcd,#undef等。 对于前一个伪指令,预编译所要做的是将程序中的所有Str用abcd替换,但作为字符串常量的Str则不被替换。对于后者,则将取消对某个宏的定义,使以后该串的出现不再被替换。原创 2013-09-06 09:54:40 · 1083 阅读 · 0 评论 -
Linux socket编程(二)之select()
Linux socket编程(二)之select() seclet()监听指定文件描述符集中的成员是否发生读写或者异常的变化。函数原型如下: int select(int maxfd,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval *timeout);/*maxfd:集合中最大的文件描述原创 2013-06-22 12:09:17 · 904 阅读 · 0 评论 -
Linux 进程间通信一之概述
Linux 进程间通信一之概述 进程是一个独立的资源管理单位,不同的进程之间资源是独立的,不能在一个进程中直接访问另一个进程的用户空间和内核空间资源。但是进程之间还需要信息的交互和状态的传递。因此需要进程间数据传递,同步及异步的机制。这些机制由操作系统来进行管理和维护。 (1)进程间通信包括同一主机间进程通信及网络主机间进程通信; 同主机进程间数据交换机制原创 2013-07-01 08:41:32 · 940 阅读 · 0 评论 -
Linux 网络编程(三)之fcntl()非堵塞
Linux socket编程(一)之fcntl()非堵塞一.背景 我们都知道一台服务器会与许多主机建立连接,但是之前的connect(),recv(),send()等都是堵塞函数。举个例子,服务器端的accept()用于接受请求建立连接,当发生accept()调用时,服务器端的程序就会一直等着某个客户端向它发送建立连接的请求,也就是发生了堵塞。我们可以把代表这个服务器程序的sock原创 2013-06-20 15:01:53 · 1551 阅读 · 0 评论 -
C语言栈与队列疑难点解析
C语言栈与队列疑难点解析 栈 只允许数据自有序列表的一个固定端(前端)做输入,输出动作,即LIFO。可用数组结构和链表结构建立栈。 数组仿真 1.声明: char stack[MaxSize]; int top=-1; MaxSize:栈中元素的最大个数,栈索引最大到MaxSize-1;top初始化为-1,可理解为数组的下标。原创 2013-08-17 16:52:34 · 1289 阅读 · 0 评论 -
Linux文件I/O操作模型浅析
Linux文件I/O操作模型浅析1.堵塞I/O操作模型: 举例说明如果你想从一块缓冲区或内存读数据,但是其中并没有数据,进程就会挂起等待数据准备好,直到数据准备好再进行read操作;2.非堵塞I/O操作模型:面对缓存区或内存并无数据的情况,进程不会休眠,而是立即返回,随后以轮询的方式不断检查数据是否准备好,数据准备好后进行读操作;3.I/O多路转接模型:较堵塞I/O操作模型多了一个se原创 2013-06-18 16:29:12 · 826 阅读 · 0 评论 -
Linux popen()函数实现流重定向
Linux popen()函数实现流重定向原创 2013-07-02 18:23:23 · 3182 阅读 · 0 评论 -
Linux进程间通信三之信号与处理
Linux进程间通信三之信号与处理 Linux信号是一种异步通信机制,在实现上是一种软中断。信号可以导致一正在运行的进程被打断,转而去处理一个突发事件。异步事件是不可预见的,但我们可以设定异步事件发生时完成相应的操作。 以下介绍几个常见的信号处理: SIGCHID:当子进程退出时给父进程发送该信号。父进程可以根据该信号来完成对子进程PCB资原创 2013-07-04 20:09:50 · 1827 阅读 · 0 评论 -
C语言变量内存分布
C语言变量内存分布 未初始化或初始化为0的全局变量和静态变量:.bss段 初始化(初始化不为0)的全局变量和静态变量:可读可写.data数据段; 局部变量,函数的形参:stack栈; const修饰的变量:只读.data数据段; 动态分配的空间:堆;原创 2013-08-08 10:08:19 · 1436 阅读 · 0 评论 -
feof函数,fscanf函数,strtok函数等遇到的小疑惑解决办法
Linux C关于文件操作的几个疑惑解答 近几天几个人要做一个快译通软件,根据英语查汉语,本人负责将dict.txt词库中的单词调入内存,在哈希表中存储。现把自己在敲代码中遇到的几个问题及解决办法记录下来。原创 2013-08-29 20:09:19 · 1924 阅读 · 0 评论 -
Linux 文件I/O(一)之入门及练习源码
UNIX高编之文件I/O练习源码1.file_cpy.c 实现文件的拷贝#include #include #include #include #include #include int file_cpy(int fd_src,int fd_des){ int sret,dret; char str[128]; char *p; bzero(str,128);原创 2013-09-10 16:29:56 · 817 阅读 · 0 评论 -
Linux 网络应用开发(一)之TCP/IP协议族
TCP/IP协议概述从底层向上层开始介绍:一,网络接口层 它是数据包从一个设备的网络层传输到另外一个设备的网络层的方法。网络接口层在发送端将上层的IP数据报封装成帧后发送到网络上;数据帧通过网络到达接收端时,该结点的网络接口层对数据帧拆封,并检查帧中包含的MAC地址。如果该地址就是本机的MAC地址或者是广播地址,则上传到网络层,否则丢弃该帧。二,网络层原创 2013-06-19 17:03:49 · 1109 阅读 · 0 评论 -
C语言内存管理(数组,指针)
C语言内存管理 几个规则: 【规则1】用malloc或new申请内存后,应该立即检查指针是否为null.防止使用指针为null的内存。 【规则2】不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为值使用。 【规则3】避免数组或指针的下标越界,特别要小心发生“多1”或者“少1”的操作。 【规则4】动态内存的申请和释放必须配对,防止内存泄露。原创 2013-08-03 19:57:48 · 1444 阅读 · 0 评论 -
C语言单链表各操作源代码
C语言单链表各操作源代码/*my_list.h*//*author:lidata:13/08/13*/#ifndef MY_LIST_H_#define MY_LIST_H_typedef struct stu{ int num; char name[20]; struct stu* next;}stu_info;typedef stu_info* no原创 2013-08-14 20:50:35 · 1908 阅读 · 0 评论 -
Linux c 文件操作杂笔
菜鸟一个刚开始学习linux c语言,把自己学习中每天杂七杂八的小收获记录下来,以后好多熟悉一下!1、linux设备文件 linux系统基于文件,硬件、软件全部可以用文件表示,你对这个文件操作就相当于操作对应的硬件设备。linux下的/dev目录下就存放了linux的设备文件,按照他们的存取数据的方式,可以分为:字符设备,块设备,伪设备。 字符设备:每次与系原创 2013-05-25 09:33:49 · 960 阅读 · 0 评论 -
Linux 网络应用开发(二)之socket编程
socket编程例程 本例程讲解一个socket网络编程的一个简单例子!/*server.c*/#include#include#include#include#include#include#include#include#define PORT 4321#define BUFFER_SIZE 1024#define MAX_COMN_NUM 5int m原创 2013-06-19 16:26:36 · 1010 阅读 · 0 评论 -
Linux C语言动态库及静态库的制作步骤讲解
Linux C语言动态库及静态库的制作讲解 假设在math目录下已编辑好add.c sub.c div.c mul.c func_point.c文件,func_point.c为主文件! 动态库的制作: 方法一:gcc -c -fPIC add.c sub.c div.c mul.c //-c表示生成.o目标文件,-f后加一些编译选项,PIC表示与位置无关gc原创 2013-08-08 17:23:39 · 2087 阅读 · 0 评论