进程:
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