随笔分类 -  系统编程

dup等复制文件描述符函数
摘要:[root@bogon code]# cat b.c #include<stdio.h> #include<error.h> #include<unistd.h> #include<fcntl.h> #define MAX_SIZE 5 int main() { int fd=open("a.c", 阅读全文

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

算法——二分搜索
摘要:思路:首先从数组中间的数把数组分成两部分,如果查找的数比中间的数大,说明接下来需要查找右边的部分,令中间的的下标+1为下一次开始查找的开始位置,再从low到high之间查找,一直循环。 [root@bogon code]# cat erfen.c #include<stdio.h> int work 阅读全文

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

获取和设置用户id以及组id
摘要:#include<unistd.h> uid_t getuid(void); uid_t geteuid(void);//获取有效用户id gid_t getgid(void); gid_t getegid(void); int setuid(uid_t uid); int setgid(gid_t 阅读全文

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

linux网络编程概念(一)
摘要:AF表示地址族(address family) PF表示协议族(protocol family) domain参数 AF_UNIX 内核中通信 sockaddr_un AF_INET 通过ipv4 sockaddr_in AF_INET6 通过ipv6 sockaddr_in6 socket分为两种 阅读全文

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

linux内核编程helloworld(中级)
摘要:传入参数 [root@bogon modules]# cat first.c #include<linux/kernel.h> #include<linux/stat.h> #include<linux/moduleparam.h> #include<linux/init.h> #include<l 阅读全文

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

系统和进程相关信息
摘要:查看进程号为1的进程信息[root@bogon code]# cat /proc/1/status //proc目录下的数字就是进程号]Name: systemdState: S (sleeping)Tgid: 1Ngid: 0Pid: 1PPid: 0Tr... 阅读全文

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

常用C语言time时间函数
摘要:常见的时间函数有time( )、ctime( )、gmtime( )、localtime( )、mktime( )、asctime( )、difftime( )、gettimeofday( )、settimeofday( ) 其中,gmtime和localtime函数差不多,只是lo... 阅读全文

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

setjmp与longjmp非局部跳转函数的使用
摘要:[root@bogon code]# cat c.c#include#includestatic jmp_buf env;//定义全局变量envvoid job(){ longjmp(env,2);//会返回到setjmp(env)处,且返回值为2}void work(int ... 阅读全文

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

截断文件函数truncate和ftruncate
摘要:两个函数目的都是将文件大小设置为length参数指定的值 int truncate(const char *pathname,off_t length)//pathname就是路径 int ftruncate(int fd,off_t length);//该系统调用不会修改文件偏移量 其中trunc 阅读全文

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

汉诺塔问题
摘要:#include<stdio.h> void work(int d,char A,char B,char C) { if(d==1)//d为1时,就不再递归了 { printf("move %d from %c to %c\n",d,A,C); } else { work(d-1,A,C,B); p 阅读全文

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

getpwnam,getgrnam,getpwent,crypt等函数
摘要:[root@bogon code]# cat a.c #include<stdio.h> #include<pwd.h> int main() { struct passwd *pw;//定义指针pw记录返回值 pw=getpwnam("root"); printf("%s %s %d %d %s 阅读全文

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

这样学习C语言最有效(高级技巧)——共勉
摘要:第一章 学习C语言的起跑线 1.1 C语言已死? 本资料描述的是使用C语言的高级技巧,力求将你的C语言能力由“基础”提升为“高级”。但是学习态度胜过学习方法,在正式学习之前,有一个问题不吐不快,那就是“C语言还值得学习吗?” 正方观点——C语言已死 正方论据:C语言的三宗罪: 1、代码底层,缺乏共享 阅读全文

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

linux内核入门(1)——基本简介和编译
摘要:获取linux内核源码,自己选择版本(我下载的是linux-3.1.10.tar.gz ,我是直接下载到/usr/src文件夹的) 下载地址传送门 https://www.kernel.org/pub/linux/kernel/ 也可以去我的网盘下载: https://pan.baidu.com/s 阅读全文

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

sudo权限的设置
摘要:什么是sudo,为什么要sudo呢?就我个人愚见普通用户sudo之后拥有root用户的所有权限,其优点在于,虽然该用户拥有root权限,但他却不需要知道root用户密码,需要输入的是他本身的密码。 那既然sudo用户也具有潜在的毁灭性,比如说一时头脑短路,普通用户sudo rm -rf /* 不就完 阅读全文

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

C语言指针入门
摘要:指针指包含地址 声明指针: int num;声明整数 int *num;声明指针,下面的声明也是等价的,空格的使用指示个人爱好 int* num; int * num; int *num; int*num; 阅读声明: const int *pci; 倒过来读比较好看,pci是个指针变量,pci是个 阅读全文

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

C语言函数指针的使用
摘要:使用函数指针时一定要注意,因为c不会检查参数是否正确 区分返回指针的函数和函数指针 int *f4();返回一个整数指针 int (*f5)();返回整数的函数指针 int * (*f6)();返回整数指针的函数指针 传递函数指针例子 #include<stdio.h> int add(int a, 阅读全文

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

C语言文件操作
摘要:下列代码创建一个a.txt文件,权限777,fp为返回码 #include<stdio.h> #include<fcntl.h> int main(){ int fp; fp=open("a.txt",O_CREAT,777); printf("%d\n",fp); close(fp); retur 阅读全文

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

汇编1
摘要:mov bx,1000H mov ds,bx mov al,[0] 以上三条语句目的是读取10000H单元的内容放到al中 ds寄存器通常用来村发给你要访问数据的段地址 []中的数字表示内存单元的偏移地址 注意不能直接吧数据送入段寄存器中,例如ds等,所以这里先把数据送入bx,然后再把bx送入ds 阅读全文

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

execve函数的介绍与使用
摘要:#include<stdio.h> #include<unistd.h> int main() { char *filename[]={"./BP",NULL};//BP是c文件编译链接后产生的可执行文件,目的是打印一条语句 char *envp[]={0,NULL};//如果依赖于新环境变量,这里 阅读全文

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

进程间通信——共享内存
摘要://shmdata.h //test if define #ifndef _SHMDATA_H_HEADER #define _SHMDATA_H_HEADER #define TEXT_SIZE 100 struct shared_use_set { int readed;//为1时可写入,为0时 阅读全文

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

导航