★斗 处理信号列表(⑤种) CTRL C EVENT 收到CTRL+C信号 CTRL BREAK EVENT 收到CTRL+ BREAK信号 CTRL CLOSE EVENT 当用户关闭控制台时系统向该控制台 的所有进程发送的控制台关闭信号 CTRL LOGOFF EVENT 用户退出系统时系统向所有控制台进 程发送的退出信号 CTRL SHUTDOWN EVENT 8 系统关闭时向所有控制台进程发送的 关机信号 实例:2001-08-15 SetConsoleCtrlHandler. cpp 爷 该程序可改信号处理例程。主程序会发送一个 Ctrl-C信 12 号。对Ctrl-C信号的处理是一个响声,对关窗口信号的 16 处理是显示一段提示
Microsoft Windows 2000/XP 16 处理信号列表(5种) CTRL_C_EVENT 收到 CTRL+C 信号 CTRL_BREAK_EVENT 收到 CTRL+BREAK 信号 CTRL_CLOSE_EVENT 当用户关闭控制台时系统向该控制台 的所有进程发送的控制台关闭信号 CTRL_LOGOFF_EVENT 用户退出系统时系统向所有控制台进 程发送的退出信号 CTRL_SHUTDOWN_EVENT 系统关闭时向所有控制台进程发送的 关机信号 实例:2001-08-15 SetConsoleCtrlHandler.cpp 该程序可改信号处理例程。主程序会发送一个Ctrl-C信 号。对Ctrl-C信号的处理是一个响声,对关窗口信号的 处理是显示一段提示
3.1.22 signa|和rase signal设置中断信号处理例程;如: SIGINT (CTRL+C)、 SIGABRT异常中止等信号的处理 raise给本进程发送一个信号; UNIX中的ki可向其他进程发信号,但在 Windows 2000XP中没有ki 处理信号列表(6种) SIGABRT非正常终止 SIGFPE 浮点计算错误 SIGILL 非法指令 SIGINT CTRL+C信号(对Win32无效) SIGSEGV非法存储访问 SIGTERM 终止请求 实例:2001-08-14 raise. cpp
Microsoft Windows 2000/XP 17 3.1.2.2 signal和raise 返回 • signal设置中断信号处理例程;如:SIGINT (CTRL+C)、SIGABRT异常中止等信号的处理; • raise给本进程发送一个信号; – UNIX中的kill可向其他进程发信号,但在Windows 2000/XP中没有kill。 • 处理信号列表(6种) SIGABRT 非正常终止 SIGFPE 浮点计算错误 SIGILL 非法指令 SIGINT CTRL+C 信号(对 Win32 无效) SIGSEGV 非法存储访问 SIGTERM 终止请求 实例:2001-08-14 raise.cpp
?3.1.3 Windows2000基于次映亦 ≤8的共享存储区 将整个文件映射为进程虚拟地址空间的一部分来加以访 问。在 Create FileMapping和 Open FileMapping时可以指 定对象名称。 Create FilleMapping为指定文件创建一个文件映射对象,返回对 象指针; Open Filemapping打开个命名的文件映射对象,返回对象指针 Map viewofFile把文件映射到本进程的地址空间,返回映射地址 空间的首地址 这时可利用首地址进行读写; 92 FlushⅤ iewofFile可把映射地址空间的内容写到物理文件中; 爷 Unmap viewofFile拆除文件映射与本进程地址空间间映射关系 27 随后,可利用 Close handlle关闭文件映射对象 18 返回
Microsoft Windows 2000/XP 18 3.1.3 Windows 2000/XP基于文件映射 的共享存储区 返回 • 将整个文件映射为进程虚拟地址空间的一部分来加以访 问。在CreateFileMapping和OpenFileMapping时可以指 定对象名称。 – CreateFileMapping为指定文件创建一个文件映射对象,返回对 象指针; – OpenFileMapping打开一个命名的文件映射对象,返回对象指针; – MapViewOfFile把文件映射到本进程的地址空间,返回映射地址 空间的首地址; • 这时可利用首地址进行读写; – FlushViewOfFile可把映射地址空间的内容写到物理文件中; – UnmapViewOfFile拆除文件映射与本进程地址空间间映射关系; • 随后,可利用CloseHandle关闭文件映射对象;
★斗 共享存储区实例 http://www.microsoftcom/msj/defaultframe.asppage=/msj1198/ wicked/wicked1198htm&nav=/msi/1198/newnan.htm 在 CsharedMemory: Create中 SharedMem. cpp:Line71: Create FileMapping:创建文件映射对象; SharedMem. cpp:Line92: Map viewoffile:映射文件; 在 CsharedMemory: Deletel中 SharedMem. cpp:Line16: Unmap ViewOfFile:拆除文件映射; SharedMem. cpp:Line168: Closehandle:关闭文件映射对象; 在 CsharedMemory:rite和 CsharedMemory:Read中 SharedMem. cpp:Line206和226: Copy Memory进行数据传送; 爷 27 2001-08-16 Nov98 Wicked-FileMapping exe 19
Microsoft Windows 2000/XP 19 共享存储区实例 • http://www.microsoft.com/msj/defaultframe.asp?page=/msj/1198/ wicked/wicked1198.htm&nav=/msj/1198/newnav.htm • 在CsharedMemory::Create中: – SharedMem.cpp: Line 71: CreateFileMapping:创建文件映射对象; – SharedMem.cpp: Line 92: MapViewOfFile: 映射文件; • 在CsharedMemory::Delete中: – SharedMem.cpp: Line 166: UnmapViewOfFile: 拆除文件映射; – SharedMem.cpp: Line 168: CloseHandle: 关闭文件映射对象; • 在CsharedMemory::Write和CsharedMemory::Read中: – SharedMem.cpp: Line 206和226: CopyMemory进行数据传送; 2001-08-16 Nov98Wicked-FileMapping.exe
★斗 3.1. 4 Windows 2000/XPEXd Windows200P提供无名管道和命名 管道两种管道机制。 Windows2000/XP的无名管道类似于 UNIX系统的管道,但提供的安全机制比 8 UNIX管道完善。 利用 CreatePipel可创建无名管道,并得到两 个读写句柄; 爷 然后利用 Read File和 Writefile可进行无名管 道的读写。 20 返回
Microsoft Windows 2000/XP 20 3.1.4 Windows 2000/XP管道 • Windows 2000/XP提供无名管道和命名 管道两种管道机制。 • Windows 2000/XP的无名管道类似于 UNIX系统的管道,但提供的安全机制比 UNIX管道完善。 – 利用CreatePipe可创建无名管道,并得到两 个读写句柄; – 然后利用ReadFile和WriteFile可进行无名管 道的读写。 返回