Linux僵死进程以及文件操作
僵死进程
僵死进程产生的原因:
当子进程先于父进程结束,父进程没有获取子进程的退出码,此时子进程变成僵死进程。
如何处理僵死进程:
(1)父进程先结束(子进程会变成孤儿进程,孤儿进程会被收养(红帽子是init(pid==1)手痒孤儿进程,Ubuntu是操作系统指定了一个进程))
(2)父进程调用wait()方法获取子进程的退出码
本质都是调用了wait()
僵死进程的坏处:会拜拜消耗内存;
总结 如何避免僵死进程:
(1)父进程先结束;
(2)父进程调用wait()方法获取子进程的退出码;
Linux操作文件的底层系统调用
C语言操作文件的几个库函数:fopen,fread,fwrite,fclose
系统调用:open,read,write,close;
系统调用方法实现在内核中;(陷入内核,切换到内核)
(1)open的介绍:
open重载:两个参数用于打开一个已经存在的文件;三个参数的用于新建一个文件,并设置访问权限;
pathname:文件的路径和名称
flags:文件的打开方式
mode:文件的权限,如“0600”;
open函数返回一个文件描述符,没打开一个文件,可以获得一个文件描述符。文件描述符是整型,失败返回一个-1,成功返回一个大于等于0的值;0,1,2是默认打开的;
0:标准输入
1:标准输出
2:标准错误输出
(2)write函数的介绍
fd:对应打开的文件描述符
buf:写入的文件内容
count:要写入多少字节
返回值:实际写入的字节数
(3)read:
fd:对应打开的文件描述符
buf:把文件内容读取到一块空间buf中;
count:期望读取的字节数
返回值:返回实际读取了的字节数
(4)close的介绍
关闭文件描述符;
(5)文件描述符:
文件打开后,内核会给文件一个编号
0:标准输入
1:标准输出
2:标准错误输出