• Unix/Linux编程实践教程(一:进程、管道)


    execvp在程序中启动新程序:

    用fork创建新进程:

    forkdemo2代码:

    测试fork的时候参考《Linux权威指南》阅读笔记(3)  使用了patch

    [root@localhost programming]# diff -c forkdemo2.c forkdemo2_new.c > forkdemo2.patch
    [root@localhost programming]# patch < forkdemo2.patch 
    patching file forkdemo2.c
    [root@localhost programming]# ls -lrt
    total 7
    -rwxrwxrwx 1 root root 4953 Sep  6 11:05 forkdemo2
    -rwxrwxrwx 1 root root 4957 Sep  6 11:14 forkdemo2_new
    -rwxrwxrwx 1 root root  119 Sep  6 11:17 forkdemo2_new.c
    -rwxrwxrwx 1 root root  263 Sep  6 11:24 forkdemo2.patch
    -rwxrwxrwx 1 root root  119 Sep  6 11:24 forkdemo2.c
    [root@localhost programming]# 

    这个forkdemo2输出的pid个数也挺有意思,最好从最底层往上算。

    怎么判断是父进程还是子进程:在父进程中fork()的返回值是子进程的pid,在子进程中是0。

    父进程用wait等待子进程退出:

    子进程退出值保存在wait的参数中:

    shell的fork、wait、exit:

    exit细节:

    exec家族:

    释放char**的空间函数值得参考(截图的时候命名带char**竟然没法保存,因为文件名中不能带*,忘记了):

    exit0表示成功:

    脚本中增加流程控制时的处理函数:

    shell变量的存储方式:

    标准C库函数getenv可以读取环境变量值:

    环境变量保存在一个字符串数组:

    comm命令比较两个文件:

    使用comm命令找出离开及新登录用户:

    最低可用文件描述符原则:

    重定向的方法:

    close-then-open方法输入重定向:

    open-close-dup-close方法:

    用open-close-dup-close方法输入重定向:

    系统调用dup小结:

    open-dup2-close方法:

     系统调用pipe创建管道:

  • 相关阅读:
    JDK集合框架--LinkedList
    JDK集合框架--ArrayList
    JDK集合框架--综述
    JDK常用类解读--StringBuffer、StringBuilder
    JDK常用类解读--String
    【spring 注解驱动开发】扩展原理
    【spring 注解驱动开发】spring事务处理原理
    【spring 注解驱动开发】Spring AOP原理
    【spring 注解驱动开发】spring自动装配
    【spring 注解驱动开发】spring对象的生命周期
  • 原文地址:https://www.cnblogs.com/ph829/p/5845674.html
Copyright © 2020-2023  润新知