c语言系统编程之多进程

程序与进程的区别?

程序是静态的未运行的二进制文件,存储在磁盘中

进程是已经运行的二进制文件,存储在内存中

进程的内存划分图有哪几部分?

堆(存储malloc和calloc出来的空间)、栈(局部变量、环境变量、命令行参数)、数据段(全局变量、静态变量、常量)、代码段(用户代码、系统初始化的代码)

进程的状态转换?

c语言系统编程之多进程_第1张图片

时间片的定义:

分时操作系统分配给每个正在运行的系统的一段微观上的时间

进程的控制命令:

ps:查看当前终端的进程

ps -e: 查看当前系统的所有进程

kill 给进程pid发送一个信号(sigstop、sigcont)

killall 给进程名发送一个信号

所有进程都有其父进程,最开始的进程有init进程和system进程创建

创建进程的函数:fork(),fork函数会连续返回两个值,一个是子进程返回零,一个是父进程返回大于零。

父子进程间不一样的属性有哪些?

pid号、记录锁、挂起的信号

孤儿进程:

当父进程比子进程先死亡,子进程就会变为孤儿进程,所有孤儿进程都由init进程进行回收。(子进程比父进程先死亡可以防止孤儿进程的产生)

僵尸进程:

子进程死亡,父进程未回收子进程的资源(调用wait),子进程变为僵尸进程

wait函数的作用:

用来回收子进程的资源,wait((int)&state),根据状态码得知子进程的状态

状态码如下:

c语言系统编程之多进程_第2张图片

获取pid的函数有哪些?

getpid()获取当前进程的pid号

getppid()获取父进程的pid号

exit函数()的作用?

使得进程退出,从运行状态进入到僵尸态。

execl()函数的作用?

让进程重新加载其他程序文件。根据路径名和需要传递给函数的参数进行加载

system(const char *command)函数的作用,通过一个子进程执行程序。

超级接口popen(const char*command,char * type)的作用?

加载一个进程并把进程的数据通过文件流指针的方式返回

进程间的通信方式有哪七种?

文件通信、管道文件、信号、网络socket、消息队列、共享内存、信号量

管道文件中无名管道的特点?

只能用于父子进程间的通信。

c语言系统编程之多进程_第3张图片

有名管道的特点?

有名管道用于不同进程间的通信,其操作与文件操作一样。

linux命令mkfifo创建有名管道

操作的步骤一般为:open打开有名管道,read/write操作有名管道,关闭有名管道

alarm函数的作用:

在一定时间后发送闹钟信号。

关于时间处理的函数有哪些?

c语言系统编程之多进程_第4张图片

信号屏蔽?略

你可能感兴趣的:(linux,运维,服务器)