linux进程和线程,以及fork、wait、waitpid函数简单介绍

进程:程序的一次运行
进程的三个基本状态:就绪、阻塞、执行
linux进程和线程,以及fork、wait、waitpid函数简单介绍_第1张图片
进程的调度方法:

先来先服务
时间片轮转
优先级

任务管理器是电脑中优先级最高的

pid_t类型其实底层为int型
fork函数:

fork函数创建子进程,无参数
返回值为-1:创建进程失败
返回值为 0:子进程
返回值为大于0:父进程 子进程共享父进程的资源(代码) 一次调用两次返回:创建子进程给子进程返回0(成功)或-1(失败),给父进程返回子进程的ID号

进程分类:
孤儿进程:父进程先结束,子进程后结束。最终由1号进程回收子进程资源
僵进程:子进程先结束,父进程后结束。子进程资源没有释放,父进程对子进程资源进行回收

进程是拥有资源的最小单位
线程是执行的最小单位

wait函数:等待第一个终止的子进程结束,阻塞当前进程,等待子进程结束再运行,如果wait之前子进程就结束了,则直接退出,不会阻塞在wait这里wait返回所等待的进程的id号,出错返回-1。宏;WIFEXITED判断进程是否正常结束:WIFEXITED(status)
waitpid函数:等待具体进程结束再运行

pthread_t类型
线程的创建:
pthread_create()参数1:ID号地址,参数2:线程属性(null表示默认属性),参数3、线程函数,参数4、线程参数
线程函数返回值必须为void* 参数是void*
多线程头文件pthread.h
编译时后加-lpthread,动态链接库
多线程是异步工作,父子进程的运行无规律可循,因此需要同步机制
创建线程成功返回0,失败返回其他值

假设现在有两个进程:
同步:只有将进程1运行结束后进程2才能开始工作,进程2需得到进程1的结果
异步:两个进程同时工作,互不影响

你可能感兴趣的:(Linux随记)