- 博客(8)
- 收藏
- 关注
原创 进程间通信 第二讲
共享内存1、由内存维护一个共享的内存区域,其它进程把自己的虚拟地址映射到这块内存,然后多个进程之间就可以共享这块内存了。2、这种进程间通信的好处是不需要信息复制,是进程间通信最快的一种方式。3、但这种通信方式会面临同步的问题,需要与其它通信方式配合,最合适的就是信号。共享内存的编程模式:进程之间要约定一个键值 进程A 进程B 创建共享内存 加载共享内存 加载共享内存 卸载共享内存 卸载共享内存 销毁共享内存共享内存常用函数:int shmget(key_t key, siz
2020-11-08 22:22:07
89
原创 进程间通信 第一讲
进程间通信进程间通信:进程之间交换数据的过程叫进程间通信。 进程间通信的方式: 简单的进程间通信: 命令行:父进程通过exec函数创建子进程时可以附加一些数据。 环境变量:父进程通过exec函数创建子进程顺便传递一张环境变量表。 信号:父子进程之间可以根据进程号相互发送信号,进程简单通信。 文件:一个进程向文件中写入数据,另一个进程从文件中读取出来。 命令行、环境变量只能单身传递,信号太过于简单,文件通信不能实时。 XSI通信方式:X/open 计算机制造商组织
2020-11-01 20:45:44
118
原创 unix进程创建使用 第三讲
进程的中断中止当前只在执行的进程,而去执行其他的任务。中断分为两种:一种来自硬件设备的中断,另一种来自其他程序的中断。信号是一种软中断,可以把他看作是进程与进程、内核与进程通信的一种方式。常见的一些信号 SIGINT(2) 终端中断信号Ctrl+c SIGQUIT(3) 终端退出信号Ctrl+/ SIGABRT(6) 调用abort函数产生的信号 SIGFPE(8) 算术信号 SIGKILL(9) 死亡信号 SIGSEGV(11) 段错误信号 SIGALRM(14) 闹钟信号 SIG
2020-10-25 21:37:31
142
原创 unix进程创建使用 第二讲
vforkpid_t vfork(void);功能:创建子进程1、vfork不能单独创建子进程,需要与excl函数簇,配合才完成子进程的创建。2、它不会复制父进程的栈、堆、数据、全局等段,也不会共享代码段,而是通过excl函数调用一个程序直接启动,从面提高创建进程的效率。 3、使用vfork创建的子进程保证,先执行子进程,后执行父进程。#include <stdio.h>#include <unistd.h>#include <sys/types.h>
2020-10-18 21:30:16
161
原创 unix进程创建使用 第一讲
进程的状态O:就绪态,一切准备工作都已经做好,等待被调用。R:运行态,Linux下没有就绪态,O也就是R。S:可唤醒的睡眠态,系统调用、获取到资源、收到信息都可以被唤醒。D:不可唤醒的睡眠态,必须等到的事件发生。T:暂停态,收到了SIGSTOP信号,当收到SIGCONT信号则继续运行。X:死亡态。Z:僵尸态。<:高优先级。N:低优先级。L:多线程进程。s:有子进程的进程。+:后台进程组。ps -auxUSER PID %CPU %MEM VSZ RSS
2020-09-20 18:30:06
335
原创 unix进程映像及虚拟内存
进程映像程序,就是程序在磁盘的一个二进制的可执行文件。操作系统把程序假造到内存中并开始执行,这就叫做进程。一个程序可以有多个进程实例,每一个进程都一个唯一的编号,叫做进程号。pid_t getpid(void);功能:获取当前进程的进程号pid_t getppid(void);功能:获取父进程的进程号#include <stdio.h>int main(){ printf("当前进程%u\n",getpid()); printf("父进程%u\n",getppid()
2020-09-13 17:56:35
273
原创 关于unix下c编程的错误处理及环境变量、内存管理
错误处理一般我们通过返回值的非法或合法表示错误,对于指针,NULL或0xffffffff表示错误。当然还有一个全局变量errno用来表示错误编号。char *strerror(int errnum); // 通过错误码来获取错误信息void perror(const char *s); // 输出上一个操作的错误原因#include <stdio.h>#include <string.h>#include <errno.h>extern int er
2020-09-05 18:01:16
146
原创 windows程序转linux程序注意点(c++、wxWidegts)
界面默认状态属性wxWidegts对于linux和windows下的默认属性有很多是不一样的。所以,通过wxWidegts写的界面程序在跨平台的情况下,请尽量把所有界面属性都写全了。另外对于一些界面初始化风格,有些是windows下特有的。如窗口类型中的:wxSTATIC_BORDERwxTRANSPARENT_WINDOWwxALWAYS_SHOW_SBwxSTATIC_BORDER等等在跨平台进行开发的时候,也需要把这些内容特定的分开。wxString初始化在默认的c++程序中,wi
2020-08-29 16:12:27
304
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人