zoukankan      html  css  js  c++  java
  • Linux下的C高级编程---学习

    一、进程

           一个正在运行的程序称为进程。例如在屏幕上正打开两个终端窗口,则说明同一个终端程序正在做为两个进程而同时执行,而每个终端窗口又都在执行shell,则每个shell又是另外一个进程。

    1.1进程标识

          每一个Linux下的进程都要分配一个唯一的进程标识(pid),pid是一个16比特的整数。此外,除了init进程外,每一个进程都有一个父进程。

    #include <stdio.h>
    #include <unistd.h>
    
    int main()
    {
        printf("The process ID is %d
    ",(int)getpid());
        printf("The parent process ID is %d
    ",(int)getppid());
        return 0;
    }

       运行结果:

                    Screenshot-root@localhost^%~-Pthread

    1.2创建进程

             每一个进程都有唯一的标识pid,而子进程是一个新产生的进程,一定具有不同于父进程的pid,所以就可以pid来区分父进程和子进程。<1>通过getpid获知当前进程的pid值。<2>也可以根据fork系统调用的返回值来判断,即父进程执行完fork后的返回值就是子进程 的pid,而在子进程中该返回值为0,显然没有任何进程的pid会等于0,于是就是可以在程序中轻易区分当前到底是父进程还是子进程 正在执行。

    #include <stdio.h>
    #include <sys/types.h>
    #include <unistd.h>
    
    int main()
    {
        pid_t child_pid;
        int i = 1;
        printf("The main program process ID is %d
    ",(int)getpid());
        child_pid = fork();
        if(child_pid != 0)
        {
            i = 0;
            printf("This is the parent process,with id %d and i = %d
    ",(int)getpid(),i);
            printf("The child's process ID id %d
    ",(int)child_pid);
        }
        else
            printf("This is the child process,with id %d and i = %d
    ",(int)getpid(),i);
        return 0;
    }
  • 相关阅读:
    ubuntu 16.04 启用root用户方法
    多线程编程理论基础
    return ,throw Exception final 在流程控制中的应用
    .NET之特性(Attribute)
    C#事件与委托机制分析
    程序设计中的异常处理(Exception)
    浅谈.net 内存泄露和内存溢出
    C#高级特性之 泛型 扩展方法 Lamda表达式
    packages.config
    C#多线程中的异常处理
  • 原文地址:https://www.cnblogs.com/haoyuanyuan/p/3265628.html
Copyright © 2011-2022 走看看