随笔分类 -  系统编程

存储方面的面试题
摘要:1)简述一下raid0,raid1,raid5 raid0:所有raid级别中存储性能最高,其原理是把连续的数据分散到多个磁盘上存取,这样系统有数据请求(读写)就可以被多个磁盘并行执行,但是没有数据冗余,安全性低。 raid1:磁盘数据镜像冗余,当原始数据繁忙时,可直接从镜像读取数据,提高读取性能( 阅读全文

posted @ 2018-04-09 16:29 标配的小号 阅读(1968) 评论(0) 推荐(0)

多线程
摘要:以下两个程序交替运行,编译时gcc -o thread1 thread1.c -lpthread ,如果需要传入一个参数,只需要在创建线程时把第四个参数改为传入的参数就可以了,NULL改为null不能编译通过,pthread_join使一个线程等待另一个线程结束,因为sleep所以运行一秒就停下等待 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(96) 评论(0) 推荐(0)

c的动态内存管理
摘要:在linux系统下使用malloc提示警告,解决方法,加入头文件<stdlib.h> 首先来个基本的例子 int *p=(int *)malloc(sizeof(int));(当malloc无法分配内存时会返回null,所以在使用它返回的指针前最好先检查null是否为空,如果不为空再使用p指针) * 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(124) 评论(0) 推荐(0)

汇编入门基础与helloworld
摘要:一个存储器拥有128个存储单元,可存储128个byte(字节),一个bite则又是由8个二进制位即bit(比特)组成,bit是计算机的最小信息单位。 总线分为地址总线,控制总线,数据总线 一个cpu有n根地址线,则说这个cpu的地址总线宽度为n,该cpu最多能寻找2的n次方个内存单元 8根数据总线可 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(211) 评论(0) 推荐(0)

linux系统调用的三种方法
摘要:通过glibc提供的库函数 [23:02:14] gcc chmodtest.c [23:02:17] ls -l kali //记得先创建这个文件 -rwxrwxrwx. 1 root root 0 May 10 22:56 kali [23:02:25] ./a.out chmod succee 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(227) 评论(0) 推荐(0)

进程间通信——管道通信
摘要:pipe管道通信 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<sys/types.h> int main(){ pid_t childpid; int fd[2]; pipe( 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(153) 评论(0) 推荐(0)

进程
摘要:设置环境变量 getenv(string)获得环境变量 putenv(string)该stringj需要带=号 setenv(name,values,int overwrite)如果环境变量已存在,且overwirte为0,则始终不改变环境,否则永远改变环境 unsetenv(name)移除name 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(91) 评论(0) 推荐(0)

汇编2——完整的例子集合
摘要://countString.asm 是用来自动统计字符串长度,然后输出该字符串 [08:12:56] vi countString.asm [08:13:28] nasm -f elf64 countString.asm [08:13:30] ld -o countString countStrin 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(208) 评论(0) 推荐(0)

数据结构与算法面试题80道
摘要:因为原文链接已挂,所以这里无法给出原文链接,但还是要感谢一下原文作者July 1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16 转换成双 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(587) 评论(0) 推荐(0)

双向链表
摘要:我主要说一下双向链表的创建,顺便说了一下删除尾节点的实现 [00:51:51] gcc doubledirectlink.c [00:51:55] ./a.out 1->2->3->4->5now del last 1->2->3->4deled [00:51:57] cat doubledirec 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(153) 评论(0) 推荐(0)

排序算法——冒泡算法及其优化
摘要:所谓冒泡算法,就是第一个跟第二个比,第二个跟第三个比。。。,首先从第一个树比到最后一个数,如果第一个比第二个大,那么一二互换,如果二三比,二大,二三再互换,如此下去,最大的数就会排到最后面,然后就是再从第一个数比到倒数第二个,重复上面的动作 现在我们看一下代码 [22:54:16] vi bubll 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(148) 评论(0) 推荐(0)

排序算法——二元选择排序
摘要:二元选择排序 原理:这个是在选择排序方法上改进的。这种排序法会同时查找最大值和最小值。找到最大最小值之后需要注意它是怎么放到正确的位置的,我就是在交换位置这里耗了一个下午,先是把头尾的值放到最大最小的那两个位置那里,在把最小和最大值分别放到头尾。 [03:20:54] vi eryuanselect 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(310) 评论(0) 推荐(0)

输出内容时后面显示乱码
摘要:使用文件操作函数时,我遇到过几次,打印内容时内容没有错误,可是末尾多显示了几个乱码,其实主要是因为字符串末尾没有赋字符串结束符号\0 [root@bogon mycode]# cat a.c #include<stdio.h> #include<fcntl.h> #include<unistd.h> 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(211) 评论(0) 推荐(0)

readv与writev
摘要:[root@bogon mycode]# cat writev.c #include<stdio.h> #include<string.h> #include<unistd.h> #include<sys/uio.h> int main() { char *str1="linux\n"; char 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(354) 评论(0) 推荐(0)

使用C语言简单模拟Linux的cat程序
摘要:先给出源码 //fileio.c #include<stdio.h> #include<stdlib.h> #include<fcntl.h> void print(int fd) { int i,len; char buf[10]; len=read(fd,buf,10);//len是成功读入的字 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(317) 评论(0) 推荐(0)

能力
摘要:给文件赋予能力,下面以date为例[bp@bogon ~]$ whereis -b date //如果去掉-b会显示额外的其他路径date: /usr/bin/date[bp@bogon ~]$ cp /usr/bin/date . //复制date命令到当前文件夹[bp@bogo... 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(241) 评论(0) 推荐(0)

进程资源
摘要:#include//返回调用进程或其子进程用掉的各类系统资源的统计信息//who参数可取下列值RUSAGE_SELF 返回调用进程相关的信息RUSAGE_CHILDREN 返回调用进程的所有被终止和处于等待状态的子进程相关的信息RUSAGE_THREAD 返回调用线程相关的信息i... 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(158) 评论(0) 推荐(0)

会话,进程组,作业控制
摘要:#include//获取一个进程的进程组pid_t getpgrp(void);//将进程id为pid的进程的进程组id修改为pgid//如果将pid设置为0,那么调用进程的进程组id就会改变,如果将pgid的设为0,那么id为pid的进程的进程组id会被设置为pid的值int se... 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(124) 评论(0) 推荐(0)

详述进程创建和程序执行
摘要:#include//一般会将相应命令至于系统启动脚本中,在系统每次重启时开启进程记账功能,其中acctfile中指定一个常规文件的路径名,记账文件通常的路径名是/var/log/pacct或/usr/account/pacct,如果想关闭进程记账功能,指定acctfile为NULLi... 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(140) 评论(0) 推荐(0)

定时器与休眠
摘要:#includeint setitimer(int which,const struct itimerval *new_value,struct itimerval *old_value); //创建一个间隔式定时器(interval timer),在未来某个时间点到期,并于此后每隔... 阅读全文

posted @ 2017-10-25 18:06 标配的小号 阅读(400) 评论(0) 推荐(0)

导航