什么是进程

1.怎样在linux查看正在运行的进程

        ps  -ef 查看所有进程及其PID(进程号)、系统时间、命令详细目录、执行者等。

        ps aux 查看除 -ef所有内容以外还显示CPU及内存占用率、进程状态。

             

2.进程是动态的,进程是程序执行和资源管理的最小单位。系统会自动为每个进程分配都有1G内核空间和3G用户空间(都是虚拟内存)

3.进程中的优先级

        -20到19,值越大,优先级越低,普通用户设置优先级最大为0。

        nice 按用户指定的优先级运行进程

        renice 改变正在运行进程的优先级

4.进程的运行状态分为:运行态、等待态、停止态、死亡态(瞬间)、僵尸态(bug)

5.创建进程

        1. fork()  返回值为0:子进程  >0:父进程     -1:出错

                pid_t  getpid(void);获得进程的id号

                pid_t getppid(void);获得父进程的id号

        2. vfork()

                提高效率,也创建新进程,但不产生父进程的副本

fork()和vfork()区别

1. fork():子进程拷贝父进程的数据段,代码段。

    vfork():子进程与父进程共享数据段。

2. fork():父子进程的执行次序不确定。

    vfork():保证子进程先运行,在调用exec或_exit之前与父进程数据是共享。调用exec或_exit之后父进程才可能被调度运行。

3. vfork()保证子进程先运行,在它调用exec或_exit之后父进程才可能被调度运行。如果在调用这两个函数之前子进程依赖于父进程的进一步动作,则会导致死锁。当需要改变共享数据段中变+量的值,则拷贝父进程。

6.回收内核空间:

        1.wait(NULL)          阻塞等待子进程退出,子进程结束后父进程继续运行。 (NULL)不为空,可以保存子进程退出时的状态

                                       函数返回值:        成功:子进程进程号         失败:-1

        2.waitpid(-1,NULL,0)        回收子进程资源

                参数1:pid =-1 等待任意一个子进程退出,此时和wait()作用一样

                参数2:同wait一样 (NULL)不为空,可以保存子进程退出时的状态

                参数3:0 同wait()一样,阻塞父进程等待子进程退出

         waitpid(-1,NULL,WNOHANG); 非阻塞等待任意一个子进程退出

                若无子进程返回值为0。若有子进程,返回值是退出的子进程号。

                若需要轮询需要写在while(1)

        3.exit(NULL)        结束进程,自带清理缓冲区。若为空忽略退出状态

        4.-exit()        不清理缓冲区退出。退出前可以用fflush()刷新缓冲区

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寻风.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值