zoukankan      html  css  js  c++  java
  • apue 20130324

    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

    #endif

     

    Stat(name,&info);

    If ((S_ISDIR)(info.st_mode))

    Return 1;

    Else

    Return 0;

     

     

     

    仅仅是一个名字 

    #ifndef

    #define

    #endif

     

    最大名字

    Stat((dir->d_name,&info);

    If (max,info.st_size){

    Max=

    Strcpy(name,dir->d_name);

    }

     

    目录操作设置continue

    Return;结束没有返回值的函数

    没有加其它文件

    Myls -l dir   现在当前目录   ls  ..  Cd .. ->ls

     

    Chdir (argv[1]);    cd dir  cat a.c

    Opendir(".");    切换

     

    把名字连起来  

    Sprintf (name,"%s /%s",argv[1]),dir->d_name);

     

    创建目录文件  :  mkdir   (目录名称,权限);

    智能cp   mycp   用递归

     

    mp3中提取专辑图片

    Jpg  文件的协议头

     

    知识:mp3文件格式,jpg文件格式

    难点大小   不能用str 开头的函数

    二进制文件有很多'\0'

     

    Stat  fstat   lstat

    文件名 文件描述符

     

    Ln -s stat.c  abcdef

    Ls  -l  abcdef  

    创建快捷方式   

     

    Lstat  本身  stat   stat.c  链接到

     

    Chmod  修改文件权限    文件的复制(带权限)

    在代码中添加    chmod(argv[2],info.argv1.st.mode)   最好在open后面加

    Fchmod  文件描述符修改文件权限

     

    面试题

    已打开的文件描述符   ,如何获取文件名

     

    Chown  改成  root   uid   拥有者

    Truncate  改变文件大小

     

    Link  连接数

     

    Symlink  readlink   目录也是目录文件

     

    /proc:不是保存在磁盘上是内核上的硬件  内核映像   内存映像

    /bin  /sbin  /lib  /root /proc  (判断)进程号

    每个数每个进程的pid

     

    内核知道cpu

    每个进程文件里有fd  (子文件夹)

    当前进程打开文件描述符

    Ls -l 

     

    Getpid()  /proc/pid/fd  都是一个link

    后边的文件名

    sleep(100000)  ps进程号

    Open   ps  -aux | grep

     

    Cd /proc/2885/进程号

     3  link  ->  syslink  readlink  

    属性是link   lstat

    readlink

    文件指向的文件描述符

     

    Getcwd();   绝对路径   唯一的

    Pwd  

    Mkdir  rmdir

    获取文件描述符  

    const 输入不带输出

    Fd -> filename  

    Fd->FILE*

    FILE * -> fd

    FILE ->filename

     

    第五章    文件操作   ANSI标准库提供的文件操作

    找开文件   fopen

    文件操作      读      写     ascii

    字符          fgetc    fputc   ascii

    行            fgets    fputs   ascii

    块            fread    fwrite  ascii  二进制

    关闭文件   fclose

     

    缓冲

    Exit()  =  清缓冲   + _exit();

    File  查看

    Od -c  查看

     

    Fp->FILE *

    FILE -> fd

    Fgets  fputs  拷贝  '\0'  不好用

     

    文本文件  open  fopen

    二进制文件:open   fopen?不一定

     

    Fopen(文件名,打开文式)

    文件名,字符串,相对路径   绝对路径   "a.c"

     

    打开方式  "r"   "w"   "r+"   "w+"   "a"   "a+"  字符串

              只读  只写  读写出错 读写只写   

    Strace   ./a.out  追踪程序调用哪些系统

     

    Fopen("a.c","rw");    O_RDONLY

    Fopen("a.c","read+write");    r+

    Fopen("a.c","roinu");   r 

    也是调用系统调用

    Fopen("a.c","iiiiiiiiiiiiiii");   r

     

    "r"

    "w"  小心

    "r+"

     

    Objdump  反汇编    很有用

     

    Fopen: 返回值    成功  FILE *  失败  NULL

    地址   分配  在堆上  malloc

     

    Fclose ();  关闭文件

    参数;   fopen  成功的返回值

    1 free()  

    刷新缓冲区

     

    Fputc  ->  缓冲区    ->  文件名

     

    如果不用fclose 不用exit   

    写      减小系统调用次数

    直接用_exit()

     

    Fgetc();  从文件中获取一个字符     二进制文件a.out

    参数1 fopen  的成功返回值

    返回值  字符的ASCII 码    三个数就是一个整型

    FILE *fp;

    Fp = fopen("abc","r");

    If (fp ==NULL)

    Ch= fgetc(fp);

    Read(fd,buf,1);   失败  EOF  -1

    Fputc();  将字符写入到文件中

    参数1  字符

    参数2  fopen   成功之后返回值

     

    重要fgets   从文件中获取字符串   buf 足够大

    如果buf较大   fgets 会从文件中获取一行   mygetline

    结果  文件  + \n + \0   

    参数 1 buf

    参数 2 size

         3 FILE *fopen 成功的返回值

    fgets(buf,sizeof(buf),fp);

     

    最多获取sizeof (buf)-1 

    返回值  成功返回参数1, 失败NULL

    Memset  (buf,'a',sizeof(buf))

    最后有'\0'

     

    Fputs  将字符串输出到文件里

    Fputs()  参数1:地址  (字符串起始地址)

            参数2 fopen成功的返回值

    提示:大一些

     

    Fread()  参数1  地址

            参数2  每次读几个

            参数次数

            参数4 fopen成功的返回值

    结果:参数2*参数3      sizeof(buf)

    返回值  成功  成功读取的次数  失败  0

    Fread (buf,1,sizeof(buf),fp);

    实际读到的字数     0   文件结尾

     

    Fwrite()

          1 地址

          2  每一次写几个  

          3 次数

          4 fopen成功的返回值

    Fwrite(buf,1,字节数,fp);

    Mydiff file1 file2

    Mycat   fgetc   gets    fread

    Mycp    fgetc  fputc  fgets   fputs  fread  fwrite

     

    Mydiff file1  file2

     

     

    第三章

    Open()  read()  write()  lseek()  close()  dup  dup2   fcntl  ioctl

    第四章  

    Stat()  fstat() lstat() 获取  chmod修改

    Chown()  truncate() opendir()  readdir()  closedir()  mkdir  rmdir

    Readdir  syslink()  

    第五章

    Fopen  fclose  fgetc  fputc  fgets   fputs   fread  fwrite

    第六章

    Getpwuid  getgrgid

    第七章

    进程环境 内存分步

    设置环境变量  getenv   setenv

    PATH:  进程表   信号

    Main.c 并发

    结束进程     return exit 刷新  _exit 不刷新

    内存分步  可用  用了多少

    第八章

    创建进程  

    Fork  vfork  区别

    Vfork  + exec  执行新

    共用同一数据区,快,东西小

    Fork  相对独立,创建子进程

    父进程与子进程区别

    继承:数据段,文本段   a, for 已经打开的文件描述符

     

    Fork()  

    返回值   在父进程中返回子进程pid

    在子进程中返回0

    Pid = fork();  一式两份

    创建n个进程

    A.out a.out a.out a.out 

    B.A.out 

    C.A.out 

    D.A.out 

    E.A.out

    F.A.out

    G.A.out

    每个进程做不同的东西

    谁先结束  父子进程

    父进程先结束   子进程?守护 init

    子进程先结束  

    Wati()   1 清理僵尸

            2 协调进程

    执行现有的功能   exec

         Ececl ("/bin/ls","ls","-l",NULL);

    Execl()

    Execv();

    Execlp();

    Execvp();

    Execle();

    Execve()

     

     

    Char *cmd_argv[]={"ls","-l",NULL};

    Execv("/bin/ls",cmd_argv);

    Execlp("ls","ls","-l",NULL);

    Char *cmd_argv[]={"ls","-l",NULL};

    Execvp(cmd_argv[0],cmd_argv);          shell

     

     

  • 相关阅读:
    c#隐藏和重写基类方法的区别
    c#事件(续委托之后)
    c# 中接口和抽象类的区别
    call 和apply 的一个记录
    string 和 stringbuilder 的区别
    传值和传引用
    值类型和引用类型
    标签选择器与字体连写
    input表单案例
    codeforces 676B B. Pyramid of Glasses(模拟)
  • 原文地址:https://www.cnblogs.com/wangjingyuwhy/p/2979811.html
Copyright © 2011-2022 走看看