随笔分类 - apue
摘要:sys/types.hsys/types.h中文名称为基本系统数据类型。在应用程序源文件中包含 <sys/types.h> 以访问 _LP64 和 _ILP32 的定义。此头文件还包含适当时应使用的多个基本派生类型。尤其是以下类型更为重要:caddr_t 核心地址。clock_t 表示系统时间(以时钟周期为单位)。comp_t 压缩的时钟滴答。dev_t 用于设备号。fd_set 文件描述集。fpos_t 文件位置。gid_t 数组值ID。ino_ti节点编号。off_t 用于文件大小和偏移量。mode_t文件类型,文件创建模式。pid_t 进程ID和进程组IDptrdiff_t
阅读全文
摘要:内部命令:cdexit(bash)中的一个功能外部命令:lsdate(有对应的二进制文件)单独的二进制文件Cd/tmpexitfork()Ls-l>a.cexec()外if(cmd>){Cmd[]=NULL;结束标志Open(a.c);Dup2(fd,1);}内if(cdbash){内部Cdchdir();Exit;return;Continue;}Ls-l|grepA过滤管道:前面命令的输出作为后面命令的输入完善内部命令ls*.a通配符通配符的支持:ls*.c任意一个ls?.c一个Ls[a-z].ca.cb.cc.cd.cApue几部分1,文件操作所有文件2,多进程进程间通讯1,
阅读全文
摘要:多进程阶段练习1myshell#ls2myshell#ls-l3myshell#ls-l-a/dev4myshell#ls-l空格或\t5myshell#ls-l错误处理6myshell#cd/tmp内部命令exit7myshell#ls-l>a.c8myshell#ls-l|grepA输出管道输入Shell人机交互的工具放到指针数组里shell接受命令->解析执行不会结束while死循环接受指令执行结果charbuf[1024];While(1){Printf("myshell#");Gets(buf);gets()可以有空格Printf("%s\n
阅读全文
摘要:If(isdir(dir->name))continue;If(dir->d_name[0]=='.')continue;If(p==NULL)continue;Strrchr:从最后开始找Char*ptr=".mp3".文件个数#include"count_line_file.h"Gcc.c.c同时编译#ifndef#else#endifStat(name,&info);If((S_ISDIR)(info.st_mode))Return1;ElseReturn0;仅仅是一个名字#ifndef#define#endif
阅读全文
摘要:Rmmyhead.cswp异常中断Return;读到文件尾少打一个加一个=号Atoi(argv[1]+1);练习:编写一个函数获取文件一行OpenreadwritecloseLseek();修改文件偏移量,修改哪一段影响下一次读写操作参数1:open()成功返回值参数2:偏移量+10-1[]偏移量+前,-后,0当前参数3:位置SEEK_SET(文件开始)SEEK_CUR(文件当前)SEEK_END(文件末尾)将文件第一个字符打印5次read从上一次开始读Lseek(fd,0,SEEK_SET);文件开始+1第一个Lseek(fd,-1,SEEK_CUR);很有用Open()回到文件开始打开,读
阅读全文
摘要:输入一个字符串,找出第一个出现一次的字符.将字符窗中的用户id打印转为整数并+1打印.Myuseradd"u3:x:502:502::/home/uu3:/bin/bash"数据指头:“1a2b”,数据针尾:"3c4d"有效数据提出来.(有点难)Bzero():地址0的个数,从该地址存n个0,与buf用Charbuf[100];随即值Bzero(buf,sizeof(buf));Structttabc;Bzero(&abc,sizeof(abc));Memset()地址,值,个数放什么都可以Memset(buf,0,sizeof(buf));改写
阅读全文
摘要:Apue函数(linux系统调用(linuxapi))5分钟函数名:功能不需要记参数Intmain(){例如没有复杂算法Open();->opendir();Read();复杂->{Printf(); readdir();Close(); }closedir();}函数实现内核源代码低版本国外操作系统原理操作系统原理Fgets(输入);Fputs(输出)const栈:结束完释放指针->函数为什么要使用函数函数:重复使用同一段代码~c++继承自定义函数:1,函数声明voidfun(void);2,函数调用fun();3,函数的定义(实现):voidfun(void){Print
阅读全文
摘要:Gets(buf);buf[i]for(;buf;)While(buf[i])i++;字符的ASCII值做判断For(;buf[i];);能放在后边空语句For(i=0;buf[i]==buf0[i];i++);空语句Ch=getchar();Gets(buf);For(i=0;buf[i];i++)最后什么条件结束Gets(buf1);For(i=0;buf2[i]=buf1[i];i++)退出条件Return;exit(),_exit();进程StrcpyStrcatFor(i=0;buf1[i];i++)For(j=0;buf1[i]=buf2[j];j++,i++)StrstrGets
阅读全文
摘要:时间下一秒:判断是不是60,是秒数为0,分钟+1判断分钟是不是60,是分钟为0,小时+1判断小时是不是24,是小时为0,日期+1s=s+1if(s==60){S=0;m=m+1;If(m==60){M=0;H++;If(h==24){H=0;}}}核心算法+一秒scanf("%d:%d:%d",&h,&m,&s);While(1){Sleep(1);表}标准C提供的输入输出函数Printf->缓冲区行全零缓冲Fopen->屏幕printf("\n");刷新缓冲区:fflush(NULL);空指针Fopen()堆上Fcl
阅读全文
摘要:程序:a.c->abc文件(二进制)->./.abc时程ps结果结果相同:可执行文件相同gcc-V(版本)直观:程序返回值intmain(intargc,char**argv){Start没有程序的入口数据区;算法;}Scanf("");没有用处.getcharfgetfgetsFile*查看文件elf可执行文件Printf();声明user/include/stdio--库内核使用的变量va_start()函数Printf();函数变参库libcgcca.c-oabc-lc加载库一个默认的函数库gccd.c-oabcfun.c很多.o->lic.so/l
阅读全文
摘要:1. 做什么。文字2. 分析。 思考3. 设计。 伪代码1嵌入式方向。2图形编程:qt(c++) gtk(c)3应用程序:vim ls ps等。Linux c开发4系统:linux(分时); 系统构建(cpu(arm) 内存 硬盘(flash芯片))5驱动程序:硬件6硬件:pcb画图工具,设计硬件难Linux arm嵌入式文件系统 GRUB引导程序 bootloader linux kernel职位:1GUI编程:qt c++(很难) 3 2C,gcc,gdb,makefile,linuxapi(接口)(apue) 4~5 Apue:文件,多进程,多线程,进程间的通信,网络编程 3系统构建 .
阅读全文

浙公网安备 33010602011771号