• Unix高级编程之进程环境



    进程:运行的程序
    线程:运行的函数

    1.main()
          启动例程
          exit(int main(argc, argv));
    2.进程终止
    进程正常终止:
    <1>main() return;
    <2>exit(3);
        1)调用终止处理程序
        2)标准IO清理程序
    <3>_exit(2) _Exit(2);
    <4>最后一个线程调用pthread_exit(3);
    <5>最后一个线程从启动例程返回
    异常终止:
    <1>abort(3);
    <2>线程对取消作出响应
    <3>信号终止

    atexit(3);
    钩子函数
    注册函数执行的顺序与其注册的顺序是相反的
    执行条件:main()函数调用return, 或者任意位置调用exit(3);

    3.环境变量和环境表
    "name=value"
    getenv(3);
    setenv(3);

    4.命令行参数的解析
    int getopt(int argc, char **argv, const char *optstring);
    argc 和 argv就是main()函数的两个参数
    optstring有一下规则:
    "-ab:c::"
    <1>以"-"开头表示可以解析非选项参数,返回1
    <2>"a"解析选项参数"-a",返回'a'
    <3>"b:"解析带参数选项"-b argument",返回'b',optarg指向argument
    <4>"c::"解析可带参数的选项"-cargument",返回'c',optarg指向argument,入没有参数optarg==NULL

    作业:
    # ./a.out -Y 4 -M -D -h24 filename

    strftime(3);

    getopt_long(3);
    能解析长格式选项
    --help
    --help arg
    --help=arg

    ls -l /etc/passed
    gcc hello.c -Wall
    tar -cvf bao.tar file1 file2 file3
    -l:选项参数
    /etc/passwd:非选项参数
    -W:带参数的选项 参数all
    -f:带参数的选项 参数bao.tar

    5.c存储分布布局

    6.共享库
    手工装载库
    dlopen();
    dlsym();
    dlclose();

    7.setjmp()和longjmp()
    setjmp(), longjmp()实现函数之间的跳转
    goto实现在函数内部跳转

    8.getrlimit(2)和setrlimit(2)

    有时候,不小心知道了一些事,才发现自己所在乎的事是那么可笑。
  • 相关阅读:
    【原创】MessageBox设置默认按钮
    探秘Win7计算器,这货不只是计算器
    android fill_parent和match_parent 的区别
    陈晓旭出家申明
    vi语法高亮
    EXTJS 常用控件的使用
    android平台下使用点九PNG技术
    【Android】附加Android源代码Androidandroid_gingerbread_javasrc
    ComboBox控件隐藏fieldLabel不能隐藏问题解决
    ScriptLoader.loadScripts cannot be called while the ScriptLoader is already loading scripts
  • 原文地址:https://www.cnblogs.com/axjlxy/p/5859867.html
Copyright © 2020-2023  润新知