进程

makefile

src = $(wildcard ./*.c)
obj = $(patsubst %.c,%,$(src))
all:$(obj)
%:%.c
        gcc $< -o $@
clean:
        -rm -rf $(obj)
.PHONY: all clean

//make main(main.c文件对应的生成可执行文件的名字)
//使用系统自带的makefile文件

程序和进程

程序:(剧本)不占用系统资源(总线,CPU等),只占用磁盘空间
进程:(一处完整的戏)运行起来的程序,需要占用系统资源

并发:

分时复用:
单道程序设计:串行,所有进程一个一个排队进行。
多道程序设计(看电影,听歌,聊天同时进行)
时钟中断(滴答)到达的时候,结束当前CPU使用权,转交给下一个程序。

ps -A 显示所有程序
ps -u 按用户名和启动时间的顺序来显示进程。
ps -x 显示所有程序,不以终端机来区分,也就是显示无控制终端的进程。
ps -j 用任务格式来显示进程
ps -au | grep mysqld 查看进程
关闭进程  kill  PID或者kill  all

pcb

进程控制块,结构体
进程状态:(初始态)就绪,运行,挂起,停止

进程控制

fork

man 2 fork 创建一个子进程
成功:返回两个参数,PID返回给父进程,子进程返回0,失败返回-1.

#include <stdio.h>
#include <unistd.h>
//pid_t fork(void);
int main01(void)
{
     printf("before fork1!\n");
     printf("before fork2!\n");
     printf("before fork3!\n");
     pid_t repid =  fork();
     if(repid == (-1)){
         perror("create process fail\n");
         exit(1);
     }else if(repid == 0){
  //       printf("child process create\n");
         printf("child pid is :%d,****ppid is :%d\n",getpid(),getppid());
     }else if(repid > 0){
//         printf("parent process create\n");
         printf("parent pid is :%d,****ppid is %d\n",getpid(),getppid());
     }
  //   printf("after fork!\n");
    return 0;
}

getpid:获取当前进程的ID
getppid:父ID

练习

循环创建多个子进程

int main02(){
    printf("before fork1!\n");
    printf("before fork2!\n");
    printf("before fork3!\n");
    int i=0;
    for(;i<5;i++){
        pid_t repid =  fork();
        if(repid == 0)
        {
        break;
        }
        if(repid == (-1)){
            perror("create process fail\n");
            exit(1);
        }else if(repid == 0){
        }else if(repid > 0){
        }
    }
     printf("### %d th ###\n",i+1);
   return 0;
}
exec系统调用

可以把当前进程替换为一个新进程,并转换到调用进程的内存空间
注意:没有返回值
练习题参考课件。

孤儿进程

父进程先于子进程结束,子进程成为孤儿进程,子进程的父进程成为init进程。
kill -9 PID kill孤儿进程是可以的

僵尸进程

进程终止,父进程尚未回收,子进程残留的PCB资源存放于内核中,成为了僵尸进程。
不可以Kill僵尸进程,可以kill子进程,使之成为孤儿进程,在kill掉。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容