zoukankan      html  css  js  c++  java
  • linux应用程序开发-进程程序设计

    学习之前必须了解基本的概念:

    进程,线程,进程3种状态,进程调度以及4种算法,进程同步,死锁,记不清的找度娘。

    获取ID

    #include<sys/types.h>

    #include<unistd.h>

    获取本进程ID:

    pid_t getpid(void)

    获取父进程ID:

    pid_t getppid(void)

    举例:

    #include<stdio.h>

    #include<stdlib.h>

    #include<unistd.h>

    int main(void)

    {

      printf("PID=%d ",getpid());

      printf("PID=%d ",getppid());

         return 0;

    }

    进程创建:

    #include<unistd.h>

    pid_t fork(void)

    创建子进程;被调用一次,返回两次,可能3种取值;

    1.父进程中,返回子进程PID;

    2.子进程中,返回0;

    3.错误返回一个负值;

    子进程的数据空间,堆栈空间都会从父进程一个copy,而不是共享。

    -vfork

    pid_t vfork(void)

    区别:vfork子进程与父进程共享数据段。

        vfork子进程先执行,父进程后执行。

        fork次序不确定;

    exec函数族:

    被执行的程序替换调用它的程序:

    区别:

      fork创建一个新进程,产生一个新PID;

      exec启动一个新程序,替换原有进程,PID不变。

    #include<unistd.h>

    int execl(const char*path,const char*arg1,...);

    path:被执行的程序名

    argn:命令行参数,含参数名,以空指针(NULL)结束

    举例:

    #include<unistd.h>

      main()

      {

        execl("/bin/ls","ls","-al","/etc/passwd",(char*)0);

      }

    #include<unistd.h>

    int execp(const char*path,const char*arg1,...);

    path:被执行的程序名(不含路径,从path环境变量中查找)。

    exmple:

    execp("ls","ls","-al","/etc/passwd",(char*)0);

    #include<unistd.h>

    int execv(const char*path, char*const argv[]);

    example:

    #include<unistd.h>

    main
    {

    char *argvl[]={"ls","-al","/etc/passwd",(char*)0};

    execv("/bin/ls",argv);

    }

    #include<stdlib.h>

    int system(const char*sring);

    调用fork产生子进程,由子进程调用/bin/sh -c string来执行参数string所代表的命令。

    e:

    system("ls -al /etc/passwd");

    进程等待:

    #include<sys/types.h>

    #include<sys/wait.h>

      pid_t wait(int*status)

    阻塞该进程,直到某个进程退出。

      

  • 相关阅读:
    希腊字母写法
    The ASP.NET MVC request processing line
    lambda aggregation
    UVA 10763 Foreign Exchange
    UVA 10624 Super Number
    UVA 10041 Vito's Family
    UVA 10340 All in All
    UVA 10026 Shoemaker's Problem
    HDU 3683 Gomoku
    UVA 11210 Chinese Mahjong
  • 原文地址:https://www.cnblogs.com/summer-xwq/p/4162314.html
Copyright © 2011-2022 走看看