进程的初步认识

       由于MP3播放器的一些基本的功能需要使用进程,而之前对进程的知识浅显,看了两天进程的资料和进程的使用,对进程(process)有了初步的认识理解。

 

      进程是操作系统结构的基础;是一个正在执行的程序;计算机中正在运行的程序实例;可以分配给处理器并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。在程序的实现中,进程使用大有裨益。

 

1.进程的创建函数:fork(),vfork() 前者父子进程执行顺序不定。

 

2.在子进程下再建立孙子进程 grand_pid=fork();的例子如下

 

int play(struct song *head)

{

 

    pid_t child_pid,grand_pid;

    char songname[30]="/huang/song/";

    int len;

    strcat(songname,head->name);

    len = strlen(songname);

    songname[len-1]='\0';

    int i=0;

    child_pid = fork();

    if(child_pid<0)

            {

                printf("fork1 error\n");

                exit(1);

            }

    else if(child_pid>0)

            {

               waitpid(child_pid,NULL,WNOHANG);//父进程操作,等待子进程结束返回pid

            }

      else        //子进程

           {

             for(i;i<30;i++)

                 {

                  grand_pid=fork();

                      if(grand_pid<0)

                          {

                            printf("fork2 error\n");

                            exit(1);

                          }

                       else if(grand_pid==0)//孙子进程

                          {

                             printf("begin\n");

                             execl("/111/madplay","madplay",songname,NULL);//execl调用后替换了孙子进程

                          }

                             

                        else  {waitpid(grand_pid,NULL,WNOHANG);//子进程对孙子的操作,消灭孙子

                       printf("over\n");head=head->next;sleep(5);}    

                    }

           }

    return 0;

}

 

以上是MP3的循环播放的部分内容。主要是孙子进程负责调用execl,父进程控制子进程,子进程控制孙子进程。

 

wait(pid,NULL);等待进程结束并将进程id值返回出来。

 

kill(pid,SIGSTOP);通知id为pid的进程stop;

 

简单的对进程的基本知识进行下描述,即对进程的浅薄的认识。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值