进程、线程、进程间通信

本文介绍了进程和线程的概念,包括如何创建进程以及使用示例。进程是系统资源调度的基本单元,而线程是CPU调度的基本单元,一个进程可包含多个线程。在进程间通信中,信号是一种重要的通信方式,用于处理软中断。文中还提及了信号的创建、使用以及处理流程,并给出了父进程等待子进程信号的示例。
摘要由CSDN通过智能技术生成
进程:

1、什么是进程?进程是一段程序运行的活动过程。进程是系统资源调度的基本单元。
2、怎么创建,怎么用?

#include <stdio.h>
#include <sys/type.h>
#include <unistd.h>

int main(void)
{
	int pid = fork();
	if(pid < 0)
	{
		perror("fork erron");
	}
	else if(pid == 0)
	{
		printf("this is an child process!\n");
	}
	else if(pid > 0)
	{
		printf("this is an parent process!\n");
		wait(NULL);//暂时停止目前进程的执行,知道有信号来到或子进程结束。
		//waitpid(getpid(), NULL, 操作项);
	}
}

3、常用函数:getpid()/getppid()/getuid()/getgid()/ getpriority() setpriority() fork() wait() waitpid()

线程

1、什么是线程?线程是进程中指令的执行体。线程是CPU调度的基本单元。一个应用程序至少有一个进程,一个进程必须要有一个线程,可有多个线程。进程中的多个线程是共享内存的。
2、进程和线程的关系?
在这里插入图片描述
3、怎么创建,怎么用?
例程:两个文件,两个线程,统计两个文件共有多少个单词。利用互斥锁修改临界资源,确保线程间的同步与协作。
在这里插入图片描述

进程间通信
1、信号

1)、什么是信号?简单来说就是软中断,模拟中断的处理方式来处理进程间通信问题。
2)、怎么创建?怎么用?
信号的发生
①键盘组合键或硬件错误检查发生的信号。
②软件函数如:kill() raise() alarm() pause()等。
信号的处理
①缺省值处理,也就是默认处理。
②信号捕捉,就是对没信号时间进行监听,一旦发生,进去到信号处理函数中去。signal(SIGINT, *signalHandler);
③忽略信号,就是可以忽略不用做处理。

信号检测处理流程如下图:
注意:信号的处理程序是在用户空间中。在这里插入图片描述
例子:父进程挂起等待子进程给父进程发出“终止进程”信号。
在这里插入图片描述
输出:

parent process
child start
this is sigfun
parent process over
child over
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值