进程
文章平均质量分 90
小心眼儿猫
这个作者很懒,什么都没留下…
展开
-
僵尸进程与孤儿进程
僵尸进程 与孤儿进程原创 2018-03-18 17:11:00 · 599 阅读 · 0 评论 -
popen函数 / system函数 / fork函数
popen() 函数函数定义:FILE* popen ( const char* command , const char* type );int pclose ( FILE* stream );函数说明: 通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一个进程。这个进程必须由 pclose() 函数关闭,而不是 fclose() 函数。...原创 2018-03-22 21:42:01 · 210 阅读 · 0 评论 -
进程的创建
进程的创建 提到进程创建,我们就需要来认识一下 fork()函数。 fork()从一个已经存在的进程中创建一个新的进程。新进程为子进程,而原进程为父进程。 如果fork()函数调用出错则会返回-1,否则子进程返回0,而父进程返回的是子进程的ID。 调用fork()函数以后,当控制转移到内核中的fork()代码以后,内核会进行以下几项工作:分配新的内存块和内核数据结构给子进程将父进程部...原创 2018-03-22 22:46:18 · 184 阅读 · 0 评论 -
进程的终止和等待
进程终止一般来说,进程的退出场景有以下三种:代码运行完毕,结果正确代码运行完毕,结果错误代码异常终止常见的退出方法:从main函数返回调用exit调用_exit在Linux学习的过程中,我们常用 Ctrl+c来终止我们运行的程序,这就是异常终止 _exit函数#include<unistd.h>void _exit(int status);//...原创 2018-03-23 23:14:13 · 287 阅读 · 0 评论 -
系统调用----初步了解文件描述符
在学习操作系统之前,我们在操作文件时会使用一些C接口,比如说,fwrite fread fopen fclose 这些,但是除了这些C接口(其他语言也有),我们还可以使用一些系统调用接口来进行文件访问。例如:写文件(write)代码实现:#include<stdio.h>#include<sys/types.h>#include<s...原创 2018-03-27 22:34:46 · 202 阅读 · 0 评论 -
进程间通信(一)---管道
进程间通信的目的: 1、数据传输:一个进程需要将他的数据发送给另一个进程 2、资源共享:多个进程间共享同样的资源 3、通知事件:一个进程需要向另一个或一组进程发送消息,通知他(他们)发生了某种事件(如进程终止时要通知父进程)。 4、进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道他的状态...原创 2018-04-12 11:22:07 · 448 阅读 · 0 评论 -
进程间通信(二)---消息队列
前面我们讲了进程间通信的其中一种方式,进程间通信(一)—管道,现在我们来讲一下另外一种方式就是消息队列。 1: 消息队列提供了从一个进程向另外一个进程发送一块数据的方法。 2:每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值。 3:消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总的字节数也是有上限的(MSGM...原创 2018-04-12 21:30:47 · 211 阅读 · 0 评论 -
进程间通信(三)---共享内存
共享内存区是最快的IPC形式。一旦这样的内存映射到共享他的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说就是进程不再通过执行进入内核的系统调用来传递彼此的数据。 共享内存示意图 共享内存数据结构struct shmid_ds { struct ipc_perm shm_perm; /* operation perms */ int shm_segsz原创 2018-04-12 23:07:46 · 157 阅读 · 0 评论