mem 族函数的实现】的更多相关文章

1.void * memcpy ( void * dest, const void * src, size_t num ); 头文件:#include <string.h>memcpy() 用来复制内存,memcpy() 会复制 src 所指的内存内容的前 num 个字节到 dest 所指的内存地址上.memcpy() 并不关心被复制的数据类型,只是逐字节地进行复制,这给函数的使用带来了很大的灵活性,可以面向任何数据类型进行复制.需要注意的是: dest 指针要分配足够的空间,也即大于等于 n…
昨天学习了Linux下的进程创建,创建一个进程的方法极为简单,只需要调用fork函数就可以创建出一个进程,但是-- 介绍fork()函数的时候提到,在创建进程后,子进程与父进程有相同的代码空间,执行的是和父进程完全一样的代码-- 那这样的话,我辛辛苦苦创建一个进程,还有什么意义? 辛辛苦苦的养大了一个儿子,难道就是为了让他走老子的老路? 带着满心的疑惑,我又进行了下一章的学习,突然恍然大悟,原来还有一个叫exec族函数的东西,专门就是用来给新创建的进程分配工作的. 调用exec族函数并不创建进程…
APPLY族函数: apply(x,a,f) 对矩阵或数据框的某一维度作用函数fx为矩阵或数据框:a为1代表行,a为2代表列:f为作用函数. lapply(x,f) 对x的每一个元组作用函数f,结果以列表显示x为列表,f作用于x的每一个组件,结果以列表形式输出x为数据框,f作用于x的每一列,结果以列表形式输出 sapply(x,f) 对x的每一个元组作用函数f,结果为向量或矩阵形式x为列表,f作用于x的每一个组件x为数据框,f作用于x的每列 tapply(x,factor,f) 对向量x以等长的…
  昨天导师甩给我们一个项目案例,让我们自己去看一看熟悉一下项目内容,我看到了这个项目里面大量使用memset(sBuf,0,sizeof(sBuf));这一块内存填充的代码,于是回想起以前查过Mem系列函数的具体用法.整理整理. 函数名称:   memset 函数原型:   void *memset(void *s, int ch, size_t n); 函数功能:   在一段内存块中填充某个给定的值,是对较大的结构体或数组进行清零操作的最快方法. 函数返回: void 参数说明: void…
前言:之前也知道exec族函数,但没有完全掌握,昨天又重新学习了一遍,基本完全掌握了,还有一些父子进程和循环创建子进程的问题,还要介绍一下环境变量,今天分享一下. 一.环境变量 先介绍下环境的概念和特性,再举例子吧. 环境变量,是指在操作系统中用来指定操作系统运行环境的一些参数.通常具备以下特征: ① 字符串(本质) ② 有统一的格式:名=值[:值] ③ 值用来描述进程环境信息. 存储形式:与命令行参数类似.char *[]数组,数组名environ,内部存储字符串,NULL作为哨兵结尾. 使用…
exec族的组成: 在Linux中,并不存在一个exec()的函数形式,exec指的是一组函数,一共有6个,分别是: #include <unistd.h> extern char **environ; int execl(const char *path, const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execle(const char *path, const char *arg…
一.apply族函数 1.apply  应用于矩阵和数组 # apply # 1代表行,2代表列 # create a matrix of 10 rows x 2 columns m <- matrix(c(1:10, 11:20), nrow = 10, ncol = 2) # mean of the rows apply(m, 1, mean) [1] 6 7 8 9 10 11 12 13 14 15 # mean of the columns apply(m, 2, mean) [1]…
最近才忙完了一个操作系统的作业,让我们用C语言实现一个Shell.总的来说,其实就是让我们 对系统调用有比较深的了解. 首先 介绍一下我的Shell 所实现的功能.1.运行可执行程序 即输入某个 标志符号 使得其能在我的Shell中运行,并且不退出当前shell.2.获得某个程序的中某个字符串的个数(其实就是调用了/bin/里面的grep) 3.使用管道,实现两个子进程之间的联系,当然不能连shell自己都退出了.. 4.定向输出到某个个文本文件中. 但是在这之前,我想先谈谈我对fork()这个…
1.为什么需要exec族函数 (1).fork子进程是为了执行新程序(fork创建子进程后,子进程和父进程同时被OS调度执行,因此子程序可以单独的执行一个程序,这样程序宏观上将会和父进程程序同时进行) (2).可以直接在子进程中的if中写入新程序的代码.这样做是可以的,但是不够灵活,因为我们只能把子进程程序的源代码贴过来执行(必须知道源代码,而且源代码如果太长了也不好控制),譬如说我们希望子进程来执行ls -la命令就不行了,因为没有ls的源代码,有的只是编译好的可执行程序. (3).使用exe…
背景 在提到 vfork 函数时,我们提到了这个概念.为了更好地学习与运用,我们对exec族函数进行展开. exec函数族 介绍 有时我们希望子进程去执行另外的程序,exec函数族就提供了一个在进程中启动另一个程序执行的方法.它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段.代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新程序的内容替换了.另外,这里的可执行文件既可以是二进制文件,也可以是Linux下任何可执行脚本文件. 在Linux中使用ex…