自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(22)
  • 资源 (1)
  • 收藏
  • 关注

原创 可靠信号和不可靠信号的测试

#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <signal.h>/* 1. 创建子进程和父进程 2. 注册 SIGINT 非实时信号 SIGRTMIN 实时信号,添加到进程阻塞中 3. 注册用户自定义信号 SIGQUIT 4. 子进程发送3次非实时信号,发3次实时信号

2016-03-23 21:13:17 519

原创 信号发送(sigqueue)和接收(sigaction)

#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <signal.h>void handle(int signum, siginfo_t *info, void *p);int main(void){ pid_t fpid; union sigval value; // 待发送的附加信息

2016-03-23 13:40:14 1790

原创 函数指针做函数参数

#include <stdio.h>#include <stdlib.h>// 函数声明int add(int, int);int load_func(int (*pfunc)(int, int));int main(void){ int (*padd)(int, int); // 定义一个函数指针变量 padd = &add; // &符号可要可不

2016-03-20 18:56:42 478

原创 wait如何处理多进程(多个子进程)

#include <stdio.h>#include <stdlib.h>#include <unistd.h>/* linux 系统调用 wait() * 当用fork()创建子进程,子进程在退出后父进程没有调用wait * 就会产生僵尸进程. * * 下面是用fork循环创建多个子进程,在父进程里调用一次wait * 只能回收一个子进程. * * 下面展示如何用wait()回

2016-03-20 15:39:58 4651

原创 fork函数02

#include <stdio.h>#include <stdlib.h>#include <unistd.h>// 创建procnum个子进程,每个进程循环loopnum次int main(void){ int procnum = 0, loopnum = 0; int i = 0, j = 0; pid_t fpid; printf("procnum: ")

2016-03-17 19:52:46 221

原创 通过execve在两个进程间传递环境变量

进程1:execve 进程2:hello execve.h 的代码如下:#include <stdio.h>#include <stdlib.h>#include <unistd.h>/* #include <unistd.h> execve是系统调用,下面的函数是execve的库函数 extern char **environ; int execl(c

2016-03-17 19:35:55 2669

原创 vfork函数

#include <stdio.h>#include <stdlib.h>#include <unistd.h>/* vfork和fork的区别: 1.vfork创建的子进程和父进程共享线性地址空间;fork创建的子进程具有独立的线性地址空间 2.vfork先执行子进程;fork子进程和父进程的执行顺序是随机的 3.vfork创建的子进程

2016-03-17 17:12:40 371

原创 fork函数01

#include <stdlib.h>#include <stdio.h>#include <string.h>#include <signal.h>#include <errno.h>int main(void){ pid_t fpid; // pid_t-->unsigned int int count = 0; fpid = fork(); // 错误

2016-03-17 15:27:59 228

原创 sftp通过秘钥上传,修改文件

sftp是通过openssh与服务端建立连接的,默认端口为22新建一个sftp的用户,这里就叫sftp useradd -s /sbin/nologin sftp在sftp用户的家目录加上客户端的公钥 新建的sftp用户是没有 .ssh这个目录的,要自己手动去创建mkdir /home/sftp/.sshcd /home/sftp/.sshtouch authorized_key

2016-03-16 09:47:23 2998

原创 redmine安装部署

redmine数据库配置文件里有三种环境: production, development, testredmine/bin/rails server -b 0.0.0.0 // 默认development环境ruby redmine/bin/rails server -b 0.0.0.0 webrick -e production -d // -e指定环境 -d后台运行red

2016-03-16 09:38:46 786

原创 结构体基础02

#include <stdio.h>#include <stdlib.h>typedef struct _Teacher { char name[100]; char *title; int age; char **p_stu; // 每个老师带的学生} Teacher;// 在堆区分配内存Teacher *create_mem(int count){

2016-03-09 20:39:54 211

原创 vim的一些常用小技巧

当我们要从另外一个文本编辑器复制内容到终端的vim里时,常常会出现复制第二行往下的时候会自动在前面加上空格,如果要手动去掉这些空格会非常不方便 解决方法: 修改vim的配置文件 .vimrc set paste

2016-03-09 14:42:22 224

原创 结构体基础

#include <stdio.h>#include <stdlib.h>typedef struct _Teacher { char name; int age;} Teacher;// 打印结构体成员ageint print_t(Teacher *p, int count){ int i = 0; for (i=0; i<count; i++){

2016-03-09 11:10:08 222

原创 野指针的处理

野指针处理的三个要点: 定义指针时,把指针变量赋值为NULL 释放内存时,先判断指针变量是否为NULL 释放完毕后,把指针变量重新赋值为NULL #include <stdio.h>#include <stdlib.h>void free_mem(char *p){ if (p != NULL){ free(p); p = NULL

2016-03-09 09:48:22 817

原创 多维数组做函数参数问题

编号 数组参数 等效的指针参数 1 一位数组 char a[30] 指针 char * 2 指针数组 char *a[30] 指针的指针 char ** 3 二维数组 char a[10][30] 数组的指针 char (*a)[30]

2016-03-08 16:14:23 383

原创 wiki-confluence乱码问题

confluence里出现乱码,肯定是数据库编码的设置问题,如下:在安装confluence的时候,有两个地方需要配置字符编码1. 创建database的时候2. 连接数据库的时候(JDBC 的链接url)**JDBC的链接设置** jdbc:mysql://hostname:port/database?useUnicode=true&characterEncoding=utf8这个url

2016-03-08 09:20:41 11153

原创 定义一个一维指针指向二维数组并打印

间接证明二维数组在物理上是线性存储的#include <stdio.h>// 证明二维数组在物理上是线性存储的// a[i][j] // a[0] = a+0; a[1] = a+1; a[i] = a+i ;a+i表示第i-1行的地址// *a表示第一行第一列的地址, *a+1表示第一行第二列的地址// 定义一个一维指针指向二维数组的时候, 要将其指向二维数组的第一行第一列的地址,也就是

2016-03-07 22:24:24 1053

原创 二维数组名本质

#include <stdio.h>int main(void){ int a[10][30] = {0}; int (*pa)[30]; // 数组指针 pa = a; printf("pa=%x, pa+1=%x\n", pa, pa+1); printf("a=%x, a+1=%x\n", a, a+1); printf("a[0]=%x,

2016-03-07 21:10:58 414

原创 一维数组名的本质

#include <stdio.h>#include <string.h>/* int a[]; * int (*p)[]; // 定义数组指针 * int *p2 * p = &a; * p2 = a; * p和p2的区别可从下面程序打印的结果看出*/int main(void){ int a[5] = {1, 2, 3, 4, 5}; int i

2016-03-07 20:28:07 1471

原创 字符串模型3:查找字符串str1中字符串str2出现的次数

#include <stdio.h>#include <string.h>// 查找str1中str2出现的次数// 比如:str1 = "haabchnjabchnnjabchuioiabc" 中 str2 = "abc"出现的次数int get_count(char *str1, char *str2, int *pcount){ // 形参pcount的作用是为了计算次数

2016-03-06 20:55:24 3729

原创 字符串模型2:分别取一串字符串中的奇偶字符存放在两个不同的内存块中

#include <stdio.h>/* 有一个字符串”1a2b3d4z”,; * 要求写一个函数实现如下功能, * 功能1:把偶数位字符挑选出来,组成一个字符串1 buf1 * 功能2:把奇数位字符挑选出来,组成一个字符串2 buf2 * 功能3:把字符串1和字符串2,通过函数参数,传送给main,并打印。 * 功能4:主函数能测试通

2016-03-04 11:46:27 640

原创 字符串模型1:打印去掉字符串首尾空格后的字符

#include <stdio.h>#include <string.h>/* 有一个字符串开头或结尾含有n个空格(" helloworld "), 欲去掉前后空格 * 返回一个新字符串. * 要求1:自己定义一个接口 * 要求2:编写测试用例 * int trim_space(char *inbuf, char *outbuf);*//*函数如下*/int trim_spac

2016-03-04 11:35:13 687

编程高手箴言(梁肇新+著).

【软件】编程高手箴言(梁肇新+著).pdf

2012-05-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除