1、什么是进程、线程?都有哪些状态?与程序的区别?什么时僵死进程?
进程:正在运行的程序
状态:就绪、运行、阻塞
线程:进程内部的一条执行路径
同步方法:信号量、读写锁、条件变量、互斥锁
线程安全:无论如何执行,结果都是正确的,就是线程安全状态(同步、线程安全函数)
区别:程序运行一次便是一个进程,运行多次就是多次进程
僵死进程:子进程结束,父进程没有结束,此时子进程就会变为僵死进程,解决方法:父进程获取子进程的退出码。
进程fork()、写时拷贝、进程替换、信号量
并发:一段时间里,程序互相交替执行
并行:两个程序同时执行
2、Linux中主函数的参数有哪些?分别由什么含义?
参数:int argc参数个数、char* argv[]参数char* envp[]环境变量
3、库函数调用与系统调用的区别?
库函数的实现在库文件里,执行时切换为入口地址。
系统调用是实现在内核,陷入内核(从用户空间到内核空间)常见系统调用(fork(),printf())
4、什么是ipc机制?有名管道与无名管道的区别?
管道文件、共享内存、消息队列、套接字文件
有名管道:实现不同进程间通信。
无名管道:实现父子进程间通信。
5、下面代码一共产生多少个进程?(fork成功返回0)
int main(){