进程线程总结(1)

1.如何在Linux中查看

ps-ef 查看所有进程及其PID(进程号),系统时间等等。

进阶:除了可显示-ef所有内容外,还可显示CPU及其内存占用率,进程状态

top:动态显示系统中运行的程序

pstree :以树形方式显示系统中的进程

kill :输出特定的信号给指定PID的进程

kill -l 查看所有可用的信号名称

程序和进程的区别:

程序是静态的

进程是动态的,进程是程序执行和资源管理的最小单位

每个进程都有1G内核空间和3G用户空间

进程的分类

1:交互式进程2.批处理进程3.守护进程

进程的状态

1.运行态2.等待态3.停止态4.死亡态5.僵尸态

进程中的优先级

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

修改优先级:

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

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

1.创建进程

fork()函数

返回值为0:子进程  >0:父进程     -1:出错

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

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

vfork()函数

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

虽然vfork()不产生父进程的副本,进程间很多东西是共享的

vfork()保证了子进程先执行,且子进程要exit()之后,父进程才开始执行

3.fork()和vfork()区别

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

2. fork():父子进程的执行次序不确定。 vfork():保证子进程先运行,在调用exec或_exit之前与父进程数据是共享的,在它调用exec或_exit之后父进程才可能被调度运行。

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

进程的退出:

exit()和-exit()

exit()自带清理缓冲区

-exit()不清理缓冲区

fflush()刷新缓冲区

回收内核资源

wait()阻塞等待子进程结束回收资源(子进程不结束,父进程永远不能执行)

waitpid()  回收子进程资源

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

参数2:status(NULL):同wait一样(NULL)

        不为空,可以保存子进程退出时的状态

参数3:

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

        WNOHANG:表示非阻塞等待,若无子进程退出,返回值0,有的话返回子进程号

wait(NULL)==waitpid(-1,NULL,0)

阻塞等待任意一个子进程退出,忽略子进程的退出状态

waitpid(-1,NULL,WNOHANG):非阻塞等待任意一个子进程退出,若无子进程返回值为0

若有子进程,返回值是退出的子进程号

父子进程:

(1).fork成功之后,分为父进程(pid>0)和子进程(pid==0),子进程几乎是父进程的完全复制,子进程独有进程号,资源使用和计时器等。(2)父子进程谁先运行?看内核调度,不确定

(3)能否多次调用fork()?可以,每调用一次,创建一个子进程(4)父进程先退出,子进程未结束,子进程称为孤儿进程,被system的进程收养(5)子进程先退出,父进程未结束,并且父进程没有回收子进程的资源,子进程称为僵尸进程 

守护进程(Daemon进程)

1.守护进程的特点:

1.守护进程是Linux中三大进程之一,始终运行在后台,通常系统开启时运行,系统关闭后结束

2.独立于控制终端(与终端无关)

3.周期性执行某种任务或等待某些发生的事件。

创建守护进程

1.创建子进程,父进程退出(子进程成为后台进程)

if(fork()>0)

{

        exit(0);

}

2.设置新的会话

if(setsid()<0)

{        

        perror("setsid error");

return -1;

}

3.设置工作目录

chdir("/tmp");

4.修改文件掩码

umask(0);

5.关闭从父进程继承下来的文件描述符

int i=0;

for(i=0;i<getdtablesize();i++)

{

        close(i);

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

好困..

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

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

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

打赏作者

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

抵扣说明:

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

余额充值