Linux之进程

来源:互联网 发布:马鞍山网络大学地址 编辑:程序博客网 时间:2024/06/07 12:25

写在前面:小生纯业余选手,开此博仅仅是为了积累,纯当笔记来用。如有看官光临小生博客,请不要相信我的代码就是正确的。如果您发现了错误也恳请耽误您一点时间,请您在下面指出来,不胜感激!

如果发现一些笔记的说法完全是错误的请建议我删除!


问题:

什么是进程?

程序与进程的区别是什么?

如何创建一个进程?


在操作系统的发展历程中,为了满足多任务操作,提出了进程的模型,进程就是正在被执行的程序,正在被执行的意思通过是否占用资源(资源包括内存资源,CPU资源)来描述。

Linux中可以通过system来创建一个进程(创建的新进程执行返回后才能继续执行原来的进程,注意进程的返回值、函数的返回值 );

可以通过popen(创建一个进程,同时创建了一个父子进程之间的管道)

可以通过exec系列函数来替换进程代码(替换当前代码空间中的代码,本身不创建新的进程)

可以通过调用fork来创建子进程(创建的到心得进程,copy父进程的代码,子进程与父进程轮流执行)。

Linux中与进程相关的shell指令有ps,pstree,top,kill

<span style="font-size:18px;">#include<stdio.h>#include<unistd.h>#include<stdlib.h>#include<sys/wait.h>int main(){    /*    int r = system("ls -l");    printf("%d\n",getpid());    printf("%d\n",WEXITSTATUS(r));    //system("clear");    */        /*    char buf[1024];    //FILE *f = popen("ls -l","r");    FILE *f = popen("gcc test.cpp","r");    int fd = fileno(f);        int r;    printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");        while( (r = read(fd,buf,1024)) >0 )    {        buf[r] = '\0';        printf("%s\n",buf);    }    printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");    close(fd);    pclose(f);    */        //int r = execlp("ls","ls","-l",NULL);    int r = execl("systest","systest","-l",NULL);    printf("main:%d\n",r);    return 0;} </span>


0 0
原创粉丝点击