Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器 软件资源

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

Linux C实现cp功能

Linux C实现cp功能

一:背景看了unix/linux编程实践,跟着书上代码实现了普通文件的拷贝,看到课后习题后需要实现目录之间的拷贝,因此有了本文,我最初实现cp用了180多行代码,后来觉得很多地方可以封装,但是最后居然越封装越多达到了200多行,今晚果断再次封装,修剪了代码大概170多行,要比课后答案的要简便点。该cp可以实现普通文件的拷贝,拷贝到指定目录下,和目录直接拷贝等功能。二:思路目录之间的拷贝我觉得最主要的功能就是path路径的拼装,处理好path路径问题,就很简...
C语言的函数返回值

C语言的函数返回值

一:背景谈到C语言的函数返回值,可能会感觉很亲切,不就是一个函数返回值嘛,当初学C语言的时候早就学过了很easy嘛,我曾经也是这么想的。后来要上研究生了,研究生阶段搞得就是C,所以又重新开始学习C,学习C的过程中遇到了很多问题,在此博客中一一记录。实际过程中遇到的第一个问题自然就是函数返回值了。如果有人问你在一个函数中声明一个字符串数组,最后再return这个数组。这可以实现嘛?如果是问我我可能会毫不犹豫的说OK。那事实呢?由此本文诞生了......C++...
C语言可执行文件的内存结构

C语言可执行文件的内存结构

以前看过C可执行文件的内存结构,但都只是当时很清楚,时候就忘的差不多了,没有细细去品味,一段时间就忘得差不多了,今天看了一些书籍和博文,决定将C可执行文件的内存结构的内容通过博客记录下来。下面是一张C可执行文件的内存结构:可见进程的逻辑地址空间可分为代码段,数据段,bss段,以及堆和栈段。这些段存放的数据分别是:代码段:存放二进制程序,和常量。可通过size命令查看可执行文件的各个段的大小:#include <stdio.h>int main(...
Linux C实现mkdir功能

Linux C实现mkdir功能

一:背景Linux 中的mkdir命令是用来创建一个目录的,相应的就需要使用到linux中的系统调用函数mkdir来实现目录创建的功能。单单只是创建目录的话一个系统调用足以,本文是使用mkdir函数来实现mkdir -p这个选项的功能,对其不存在的父目录实现创建。二:思路对于一个a/b/c这样的一个多级目录,要想实现父目录的创建方法和思路有很多,可以进行字符串处理分出一级一级目录来,但是这样实现很是繁琐,以至于我想到了递归实现。思路如下:1.先判断a/b/...
Flask-mail扩展的基本使用

Flask-mail扩展的基本使用

1.安装pip install flask-mail2.使用 1.配置一些发送邮件的参数例如邮件发送服务器的地址,端口,是否加密等。 2.初始化flask-mail插件。 3.创建Message实例,设置发送的内容,地址和主题等信息 4.使用Mail实例针对Message的实例来发送3.配置参数详解下面这是在使用mail的时候需要指定的一些配置参数,需要在使用mail之前来设置相关的参数。MAIL_HOSTNAME localhost Hostna...
Python写WEB日志分析程序的一些思路

Python写WEB日志分析程序的一些思路

1.背景 刚到一家公司需要写一个实时分析tshark捕捉到的数据,tshark一直往文本里面写数据,写一个程序要实时获取到添加的数据并进行分析处理最后入库。此时思绪狂飞,想了一些比较挫的方法。本人想到的方法: 1.每隔一定时间去查看下文件的mtime,如果有改动则读取数据,并记录读取的行数。下次再去读这个文件的数据则上次记录的行数开始继续读。当文件行数太大的时候这个程序的效率就很慢了,也可以记录上次读取的字节数,然后使用linux下的open系统系统中...
Linux内核Crash分析

Linux内核Crash分析

在工作中经常会遇到一些内核crash的情况,本文就是根据内核出现crash后的打印信息,对其进行了分析,使用的内核版本为:Linux2.6.32。每一个进程的生命周期内,其生命周期的范围为几毫秒到几个月。一般都是和内核有交互,例如用户空间程序使用系统调用进入内核空间。这时使用的不再是用户空间的栈空间,使用对应的内核栈空间。对每一个进程来说,Linux内核都会把两个不同的数据结构紧凑的存放在一个单独为进程分配的存储空间中:一个是内核态的进程堆栈,另一个是紧挨...
基于 Docker 开发 NodeJS 应用

基于 Docker 开发 NodeJS 应用

这是两篇文章的第一篇。本文涵盖了有关在使用Express框架开发一个Node应用时,用Docker 替代Vagrant 的比较详细的教程, 应用将使用 connect-redis 中间件将会话信息持久化到Redis中。 第二篇文章将介绍到将这个开发的设置产品化。有关这个 Node 应用此应用包含一个 package.json, server.js 以及一个 .gitignore 文件, 它们简单到可以信手拈来。.gitignorepackage.json{...
OGLplus教程学习笔记 -- Outline

OGLplus教程学习笔记 -- Outline

最近一直在thinking inmodern C++,大部分都是使用基于对象(object based)的技术。使得对象相较于C++的面向对象风格的程序而言,对象要散列一些,结构更清晰。对象之间适配使用了大量的泛型编程(Generic programming)技术。Boost C++库的发展和C++11语言新特性对模板的支持,优秀的泛型库大量涌现。它们都继承了STL极高的可复用性与很低的学习曲线。Jeremy Ong写的Selene库是笔者目前阅读过的非常...
C++ 拷贝构造函数 赋值函数调用

C++ 拷贝构造函数 赋值函数调用

类定义中,如果未提供自己的拷贝构造函数,则C++提供一个默认拷贝构造函数,就像没有提供构造函数时,C++提供默认构造函数一样。C++提供的默认拷贝构造函数工作的方法是:完成一个成员一个成员的拷贝,如果成员是类对象,则调用其拷贝构造函数或者默认拷贝构造函数。而拷贝构造函数和赋值运算符则是C++独有的,也是很多人所不熟悉的地方。构造函数和拷贝构造函数用于从一个对象复制出另一个对象。系统提供的默认拷贝构造函数和赋值运算的工作方式是内存拷贝,也就是浅拷贝。如果对象...
C++ 中 const 常量函数 static 变量 整理

C++ 中 const 常量函数 static 变量 整理

const 只对其左边起作用,如果左边没数据 则对右边起作用如:const int * p; //修饰int 指向的数不能修改(即:不能 *p = 3形式),但指针可以修改int const * p 同const int *p ;int * const p 修饰* 是常量指针 指针不能修改(即:不能 int a ,p= &a )但其指向变量可以修改(可以*p = 3))常成员函数声明:<类型标志符>函数名(参数表)const;说明:(1...
<< 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 >>