导航
  • 全部
...

进程中的函数有什么要求

seraphim1025 2008-04-05 08:49:41
我在进程中写了一个抓图的函数,如下
CDC pDC;
pDC.CreateDC("DISPLAY", NULL, NULL, NULL);
CDC memDC; //定义一个兼容DC;
memDC.CreateCompatibleDC(&pDC);
CBitmap m_pBitMap;
CBitmap *m_pOldBitmap;
m_pBitMap.CreateCompatibleBitmap(&pDC,m_rect.Width(),m_rect.Height());
m_pOldBitmap = memDC.SelectObject(&m_pBitMap);

memDC.BitBlt(0, 0, m_rect.Width(), m_rect.Height(), &pDC, m_rect.left, m_rect.top, SRCCOPY);

memDC.SelectObject(m_pOldBitmap);
///////////////////////////////////

BITMAP btm;
m_pBitMap.GetBitmap(&btm);
DWORD size = btm.bmWidthBytes * btm.bmHeight;
LPSTR lpData=(LPSTR)GlobalAllocPtr(GPTR,size);
现在的问题是编译能通过,可是在调试的时候m_pBitMap.GetBitmap(&btm); 出现错误。请问大侠们这是为什么。谢谢!!!!
...全文
给本帖投票
330 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
scq2099yt 2008-04-05
  • 打赏
  • 举报
回复
内存泄漏单步调试
seraphim1025 2008-04-05
  • 打赏
  • 举报
回复
我是初学者,内存泄漏,谁能告诉我怎样解决,谢谢!!!
seraphim1025 2008-04-05
  • 打赏
  • 举报
回复
另外还有
Detected memory leaks!
Dumping objects ->
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {145} normal block at 0x003AA578, 21 bytes long.
Data: < >x > EC 97 3E 78 04 00 00 00 04 00 00 00 01 00 00 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {124} normal block at 0x003A8060, 23 bytes long.
Data: < >x > EC 97 3E 78 06 00 00 00 06 00 00 00 01 00 00 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {102} normal block at 0x003A81E0, 21 bytes long.
Data: < >x > EC 97 3E 78 04 00 00 00 04 00 00 00 01 00 00 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {101} normal block at 0x003A8190, 20 bytes long.
Data: < >x > EC 97 3E 78 03 00 00 00 03 00 00 00 01 00 00 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {100} normal block at 0x003A8140, 20 bytes long.
Data: < >x > EC 97 3E 78 03 00 00 00 03 00 00 00 01 00 00 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\barcore.cpp(156) : {96} normal block at 0x003A7EE0, 80 bytes long.
Data: < > 00 00 00 00 00 01 00 00 00 01 00 08 00 00 00 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp(29) : {95} normal block at 0x003A7E28, 124 bytes long.
Data: < u: > 00 00 00 00 00 00 00 00 00 00 00 00 D0 75 3A 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp(29) : {94} normal block at 0x003A7D70, 124 bytes long.
Data: < |: > 00 00 00 00 00 00 00 00 00 00 00 00 D8 7C 3A 00
i:\visual studio 2005\getpixel\cutscreen\cutscreenview.cpp(22) : {93} client block at 0x003A7CD8, subtype c0, 92 bytes long.
a CCutScreenView object at $003A7CD8, 92 bytes long
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {88} normal block at 0x003A7860, 26 bytes long.
Data: < >x > EC 97 3E 78 09 00 00 00 09 00 00 00 01 00 00 00
i:\visual studio 2005\getpixel\cutscreen\mainfrm.cpp(45) : {85} client block at 0x003A76A8, subtype c0, 148 bytes long.
a CSplash object at $003A76A8, 148 bytes long
i:\visual studio 2005\getpixel\cutscreen\mainfrm.cpp(19) : {84} client block at 0x003A74F8, subtype c0, 372 bytes long.
a CMainFrame object at $003A74F8, 372 bytes long
i:\visual studio 2005\getpixel\cutscreen\cutscreendoc.cpp(17) : {83} client block at 0x003A7430, subtype c0, 140 bytes long.
a CCutScreenDoc object at $003A7430, 140 bytes long
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp(29) : {82} normal block at 0x003A7378, 124 bytes long.
Data: < q: > 00 00 00 00 00 00 00 00 00 00 00 00 E0 71 3A 00
{81} client block at 0x003A7318, subtype c0, 32 bytes long.
a CDocManager object at $003A7318, 32 bytes long
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {80} normal block at 0x003A7288, 77 bytes long.
Data: < >x< < > EC 97 3E 78 3C 00 00 00 3C 00 00 00 01 00 00 00
i:\visual studio 2005\getpixel\cutscreen\cutscreen.cpp(75) : {79} client block at 0x003A71E0, subtype c0, 108 bytes long.
a CSingleDocTemplate object at $003A71E0, 108 bytes long
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {77} normal block at 0x003A7188, 23 bytes long.
Data: < >x > EC 97 3E 78 06 00 00 00 06 00 00 00 01 00 00 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {76} normal block at 0x003A7128, 33 bytes long.
Data: < >x > EC 97 3E 78 10 00 00 00 10 00 00 00 01 00 00 00
{75} normal block at 0x003A70D8, 20 bytes long.
Data: < >x >x >x> 04 00 00 00 00 98 3E 78 00 98 3E 78 00 98 3E 78
{74} normal block at 0x003A7078, 32 bytes long.
Data: <$R x p: 8q: > 24 52 1E 78 04 00 00 00 DC 70 3A 00 38 71 3A 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\oleinit.cpp(84) : {71} client block at 0x003A6F98, subtype c0, 68 bytes long.
a CCmdTarget object at $003A6F98, 68 bytes long
Object dump complete.
线程 'Win32 线程' (0xbe0) 已退出,返回值为 3 (0x3)。
程序“[2536] CutScreen.exe: 本机”已退出,返回值为 3 (0x3)。
seraphim1025 2008-04-05
  • 打赏
  • 举报
回复
“CutScreen.exe”: 已加载“I:\Visual Studio 2005\GetPixel\debug\CutScreen.exe”,已加载符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\ntdll.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\kernel32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_c8452471\mfc80d.dll”,已加载符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\msvcr80d.dll”,已加载符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\msvcrt.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\gdi32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\user32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\shlwapi.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\advapi32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\rpcrt4.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\comctl32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\oleaut32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\ole32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\imm32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\lpk.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\usp10.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.VC80.MFCLOC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_3415f6d0\mfc80CHS.dll”,未使用调试信息生成二进制文件。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\uxtheme.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\MSCTF.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\version.dll”,未加载任何符号。
“CutScreen.exe”: 已卸载“C:\WINDOWS\system32\version.dll”
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\MSCTFIME.IME”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\unispim6.ime”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.2600.2180_x-ww_522f9f82\GdiPlus.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\shell32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\comctl32.dll”,未加载任何符号。
线程 'Win32 线程' (0x460) 已退出,返回值为 0 (0x0)。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\mslbui.dll”,未加载任何符号。
CutScreen.exe 中的 0x00419378 处最可能的异常: 0xC0000005: 读取位置 0x4365335e 时发生访问冲突
CutScreen.exe 中的 0x00419378 处未处理的异常: 0xC0000005: 读取位置 0x4365335e 时发生访问冲突
程序“[3672] CutScreen.exe: 本机”已退出,返回值为 0 (0x0)。
seraphim1025 2008-04-05
  • 打赏
  • 举报
回复
忽略后出现下面的冲突 在使用btm.bmWidth时
CutScreen.exe 中的 0x00419378 处最可能的异常: 0xC0000005: 读取位置 0x4365335e 时发生访问冲突
CutScreen.exe 中的 0x00419378 处未处理的异常: 0xC0000005: 读取位置 0x4365335e 时发生访问冲突
seraphim1025 2008-04-05
  • 打赏
  • 举报
回复
忽略后图像调用冲突的提示
seraphim1025 2008-04-05
  • 打赏
  • 举报
回复
Debug assertion failed

Treazy 2008-04-05
  • 打赏
  • 举报
回复
出现什么错误!
seraphim1025 2008-04-05
  • 打赏
  • 举报
回复
谢谢 arong1234
我刚刚学VC++,谢谢你的宝贵建议。
arong1234 2008-04-05
  • 打赏
  • 举报
回复
你的内存泄漏和这段代码貌似无关,你双击错误信息应该能带你到分配这个内存的地方
至于你的debug error,一般会告诉你assert是在哪个文件哪行发生的,看看是不是可以估计出错原因
你代码的问题是安全性检查太少,总是假定每步都成功,但是这种假定是步成立的(你没有检查过任何一个返回值)
arong1234 2008-04-05
  • 打赏
  • 举报
回复
编程没有那么简单,能有个高手告诉你一个步骤,你就可以用来解决问题了。如果真那么简单,为什么就象微软这样的牛X公司都有hotfix,所以不要对问问题期望太高,指望一击即中,你也可以高枕无忧了。调试是需要很多经验和技巧的,也是需要非常强的耐心的。不是一蹴而就的。
我曾经为了一个bug花了半年时间,想想这不是很容易吧?
arong1234 2008-04-05
  • 打赏
  • 举报
回复
不要只想着问怎么解决,你原因还没有,怎么去解决
内存泄漏自然需要你按照10楼说的去找看看哪个变量没释放
[Quote=引用 9 楼 seraphim1025 的回复:]
怎样解决这个问题
[/Quote]
Eleven 2008-04-05
  • 打赏
  • 举报
回复
看看是哪里用了new ,没有使用delete释放!
seraphim1025 2008-04-05
  • 打赏
  • 举报
回复
怎样解决这个问题
PostgreSQL文学习手册 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (数据表 数据表 ) 4 一、表的定义: 一、表的定义: 一、表的定义: . 4 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (模式 Schema) Schema) .9 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (表的继承和分区 表的继承和分区 表的继承和分区 表的继承和分区 ) 10 一、表的继承: 一、表的继承: 一、表的继承: .10 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (常用数据类型 常用数据类型 常用数据类型 ) 16 一、数值类型: 一、数值类型: 一、数值类型: .16 六、数组: 六、数组: .22 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (函数和操作符 函数和操作符 函数和操作符 <一>) 25 一、逻辑操作符: 一、逻辑操作符: 一、逻辑操作符: 一、逻辑操作符: .25 四、字符串函数和操作: 四、字符串函数和操作: 四、字符串函数和操作: 四、字符串函数和操作: 四、字符串函数和操作: 四、字符串函数和操作: .27 五、位串函数和操作符: 五、位串函数和操作符: 五、位串函数和操作符: 五、位串函数和操作符: 五、位串函数和操作符: .29 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (函数和操作符 函数和操作符 函数和操作符 <二>) 30 六、模式匹配: 六、模式匹配: 六、模式匹配: .30 八、时间 八、时间 /日期函数和操作符: 日期函数和操作符: 日期函数和操作符: 日期函数和操作符: 日期函数和操作符: 33 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (函数和操作符 函数和操作符 函数和操作符 <三>) 35 九、序列操作函数: 九、序列操作函数: 九、序列操作函数: 九、序列操作函数: . 35 十二、系统信息 十二、系统信息 十二、系统信息 函数函数: .38 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (索引 ) 42 一、索引的类型: 一、索引的类型: 一、索引的类型: 一、索引的类型: .42 四、唯一索引: 四、唯一索引: 四、唯一索引: .43 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (事物隔离 事物隔离 ) 45 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (性能提升技巧 性能提升技巧 性能提升技巧 ) 46 一、使用 一、使用 EXPLAINEXPLAINEXPLAINEXPLAIN EXPLAIN: 46 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (服务器配置 服务器配置 服务器配置 ) 50 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: . 50 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (角色和权限 角色和权限 角色和权限 ) 52 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (数据库管理 数据库管理 数据库管理 ) 54 一、概述: 一、概述: .54 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (数据库维护 数据库维护 数据库维护 ) 56 一、恢复磁盘空间: 一、恢复磁盘空间: 一、恢复磁盘空间: 一、恢复磁盘空间: . 56 二、更新规划器统计: 二、更新规划器统计: 二、更新规划器统计: 二、更新规划器统计: 二、更新规划器统计: .57 四、定期重建索引: 四、定期重建索引: 四、定期重建索引: 四、定期重建索引: . 59 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (系统表 系统表 ) 61 一、 pg_class: pg_class: pg_class: pg_class:pg_class: 61 三、 pg_attrdef: pg_attrdef: pg_attrdef:pg_attrdef:pg_attrdef:pg_attrdef:pg_attrdef:pg_attrdef:pg_attrdef: . 63 四、 pg_authid: pg_authid: pg_authid: pg_authid:pg_authid: 64 五、 pg_auth_members: pg_auth_members: pg_auth_members: pg_auth_members:pg_auth_members: pg_auth_members:pg_auth_members:pg_auth_members:pg_auth_members: .64 七、 pg_tablespace: pg_tablespace: pg_tablespace: pg_tablespace: pg_tablespace: pg_tablespace:pg_tablespace: .65 十、 pg_index: pg_index: pg_index:pg_index:pg_index:pg_index: . 67 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (系统视图 系统视图 ) 68 一、 pg_tables: pg_tables: pg_tables: pg_tables: pg_tables: 68 二、 pg_indexes: pg_indexes: pg_indexes:pg_indexes:pg_indexes:pg_indexes: 68 三、 pg_views: pg_views:pg_views: pg_views: pg_views:pg_views: . 68 四、 pg_user: pg_user: pg_user:pg_user:pg_user: .69 五、 pg _roles:_roles:_roles:_roles: _roles: 69 六、 pg_rules: pg_rules:pg_rules:pg_rules: pg_rules: 69 七、 pg_settings: pg_settings: pg_settings: pg_settings:pg_settings: pg_settings:pg_settings:pg_settings: .70 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (客户端命令 客户端命令 客户端命令 <一>) 70 零、口令文件: 零、口令文件: 零、口令文件: .70 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (客户端命令 客户端命令 客户端命令 <二>) 75 七、 pg_dump: pg_dump: pg_dump:pg_dump:. 75 八、 pg_restore: pg_restore:pg_restore:pg_restore: pg_restore:pg_restore:pg_restore:pg_restore: 77 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (SQL (SQL语言函数 语言函数 ) . 83 一、基本概念: 一、基本概念: 一、基本概念: .83 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (PL/pgSQL (PL/pgSQL(PL/pgSQL 过程语言 过程语言 ) .86 一、概述: 一、概述:
目 录 译者序 译者简介 前言 第1章 UNIX基础知识 1 1.1 引言 1 1.2 登录 1 1.2.1 登录名 1 1.2.2 shell 1 1.3 文件和目录 2 1.3.1 文件系统 2 1.3.2 文件名 2 1.3.3 路径名 2 1.3.4 工作目录 4 1.3.5 起始目录 4 1.4 输入和输出 5 1.4.1 文件描述符 5 1.4.2 标准输入、标准输出和标准 出错 5 1.4.3 不用缓存的I/O 5 1.4.4 标准I/O 6 1.5 程序和进程 7 1.5.1 程序 7 1.5.2 进程进程ID 7 1.5.3 进程控制 7 1.6 ANSI C 9 1.6.1 函数原型 9 1.6.2 类属指针 9 1.6.3 原始系统数据类型 10 1.7 出错处理 10 1.8 用户标识 11 1.8.1 用户ID 11 1.8.2 组ID 12 1.8.3 添加组ID 12 1.9 信号 12 1.10 UNIX时间值 14 1.11 系统调用和库函数 14 1.12 小结 16 习题 16 第2章 UNIX标准化及实现 17 2.1 引言 17 2.2 UNIX标准化 17 2.2.1 ANSI C 17 2.2.2 IEEE POSIX 18 2.2.3 X/Open XPG3 19 2.2.4 FIPS 19 2.3 UNIX实现 19 2.3.1 SVR4 20 2.3.2 4.3+BSD 20 2.4 标准和实现的关系 21 2.5 限制 21 2.5.1 ANSI C限制 22 2.5.2 POSIX限制 22 2.5.3 XPG3限制 24 2.5.4 sysconf、pathconf 和fpathconf 函数 24 2.5.5 FIPS 151-1要求 28 2.5.6 限制总结 28 2.5.7 未确定的运行时间限制 29 2.6 功能测试宏 32 2.7 基本系统数据类型 32 2.8 标准之间的冲突 33 2.9 小结 34 习题 34 第3章 文件I/O 35 3.1 引言 35 3.2 文件描述符 35 3.3 open函数 35 3.4 creat函数 37 3.5 close函数 37 3.6 lseek函数 38 3.7 read函数 40 3.8 write函数 41 3.9 I/O的效率 41 3.10 文件共享 42 3.11 原子操作 45 3.11.1 添加至一个文件 45 3.11.2 创建一个文件 45 3.12 dup和dup2函数 46 3.13 fcntl函数 47 3.14 ioctl函数 50 3.15 /dev/fd 51 3.16 小结 52 习题 52 第4章 文件和目录 54 4.1 引言 54 4.2 stat, fstat和lstat函数 54 4.3 文件类型 55 4.4 设置-用户-ID和设置-组-ID 57 4.5 文件存取许可权 58 4.6 新文件和目录的所有权 60 4.7 access函数 60 4.8 umask函数 62 4.9 chmod和fchmod函数 63 4.10 粘住位 65 4.11 chown, fchown和 lchown函数 66 4.12 文件长度 67 4.13 文件截短 68 4.14 文件系统 69 4.15 link, unlink, remove和rename 函数 71 4.16 符号连接 73 4.17 symlink 和readlink函数 76 4.18 文件的时间 76 4.19 utime函数 78 4.20 mkdir和rmdir函数 79 4.21 读目录 80 4.22 chdir, fchdir和getcwd函数 84 4.23 特殊设备文件 86 4.24 sync和fsync函数 87 4.25 文件存取许可权位小结 88 4.26 小结 89 习题 89 第5章 标准I/O库 91 5.1 引言 91 5.2 流和FILE对象 91 5.3 标准输入、标准输出和标准出错 91 5.4 缓存 91 5.5 打开流 94 5.6 读和写流 96 5.6.1 输入函数 96 5.6.2 输出函数 97 5.7 每次一行I/O 98 5.8 标准I/O的效率 99 5.9 二进制I/O 100 5.10 定位流 102 5.11 格式化I/O 103 5.11.1 格式化输出 103 5.11.2 格式化输入 103 5.12 实现细节 104 5.13 临时文件 105 5.14 标准I/O的替代软件 108 5.15 小结 108 习题 108 第6章 系统数据文件和信息 110 6.1 引言 110 6.2 口令文件 110 6.3 阴影口令 112 6.4 组文件 113 6.5 添加组ID 114 6.6 其他数据文件 115 6.7 登录会计 116 6.8 系统标识 116 6.9 时间和日期例程 117 6.10 小结 121 习题 121 第7章 UNIX进程的环境 122 7.1 引言 122 7.2 main 函数 122 7.3 进程终止 122 7.3.1 exit和_exit函数 122 7.3.2 atexit函数 124 7.4 命令行参数 125 7.5 环境表 126 7.6 C程序的存储空间布局 126 7.7 共享库 127 7.8 存储器分配 128 7.9 环境变量 130 7.10 setjmp 和longjmp函数 132 7.10.1 自动、寄存器和易失变量 134 7.10.2 自动变量的潜在问题 136 7.11 getrlimit 和setrlimit函数 136 7.12 小结 139 习题 140 第8章 进程控制 141 8.1 引言 141 8.2 进程标识 141 8.3 fork函数 142 8.4 vfork 函数 145 8.5 exit函数 147 8.6 wait和waitpid函数 148 8.7 wait3和wait4函数 152 8.8 竞态条件 153 8.9 exec函数 156 8.10 更改用户ID和组ID 160 8.10.1 setreuid 和setregid函数 162 8.10.2 seteuid和 setegid函数 163 8.10.3 组ID 163 8.11 解释器文件 164 8.12 system函数 167 8.13 进程会计 171 8.14 用户标识 175 8.15 进程时间 176 8.16 小结 178 习题 178 第9章 进程关系 180 9.1 引言 180 9.2 终端登录 180 9.2.1 4.3+BSD终端登录 180 9.2.2 SVR4终端登录 182 9.3 网络登录 182 9.3.1 4.3+BSD网络登录 182 9.3.2 SVR4网络登录 183 9.4 进程组 183 9.5 对话期 184 9.6 控制终端 185 9.7 tcgetpgrp 和tcsetpgrp函数 187 9.8 作业控制 187 9.9 shell执行程序 189 9.10 孤儿进程组 193 9.11 4.3+BSD实现 195 9.12 小结 197 习题 197 第10章 信号 198 10.1 引言 198 10.2 信号的概念 198 10.3 signal函数 203 10.3.1 程序起动 205 10.3.2 进程创建 206 10.4 不可靠的信号 206 10.5 断的系统调用 207 10.6 可再入函数 209 10.7 SIGCLD语义 211 10.8 可靠信号术语和语义 213 10.9 kill和raise函数 213 10.10 alarm和pause函数 214 10.11 信号集 219 10.12 sigprocmask 函数 220 10.13 sigpending函数 222 10.14 sigaction函数 223 10.15 sigsetjmp 和siglongjmp函数 226 10.16 sigsuspend函数 229 10.17 abort函数 234 10.18 system函数 235 10.19 sleep函数 240 10.20 作业控制信号 241 10.21 其他特征 243 10.21.1 信号名字 243 10.21.2 SVR4信号处理程序的附 加参数 244 10.21.3 4.3+BSD信号处理程序的附 加参数 244 10.22 小结 244 习题 244 第11章 终端I/O 246 11.1 引言 246 11.2 综述 246 11.3 特殊输入字符 250 11.4 获得和设置终端属性 254 11.5 终端选择标志 254 11.6 stty命令 258 11.7 波特率函数 259 11.8 行控制函数 260 11.9 终端标识 260 11.10 规范方式 263 11.11 非规范方式 266 11.12 终端的窗口大小 270 11.13 termcap, terminfo和 curses 271 11.14 小结 272 习题 272 第12章 高级I/O 273 12.1 引言 273 12.2 非阻塞I/O 273 12.3 记录锁 275 12.3.1 历史 276 12.3.2 fcntl记录锁 276 12.3.3 锁的隐含继承和释放 280 12.3.4 4.3+BSD的实现 281 12.3.5 建议性锁和强制性锁 284 12.4 流 288 12.4.1 流消息 289 12.4.2 putmsg和putpmsg函数 290 12.4.3 流ioctl操作 291 12.4.4 write至流设备 294 12.4.5 写方式 294 12.4.6 getmsg和getpmsg函数 294 12.4.7 读方式 295 12.5 I/O多路转接 296 12.5.1 select函数 298 12.5.2 poll函数 301 12.6 异步I/O 303 12.6.1 SVR4 303 12.6.2 4.3+BSD 303 12.7 readv和writev函数 304 12.8 readn和writen函数 306 12.9 存储映射I/O 307 12.10 小结 311 习题 311 第13章 精灵进程 312 13.1 引言 312 13.2 精灵进程的特征 312 13.3 编程规则 313 13.4 出错记录 314 13.4.1 SVR4流log驱动程序 315 13.4.2 4.3+BSD syslog设施 316 13.5 客户机-服务器模型 319 13.6 小结 319 习题 319 第14章 进程间通信 320 14.1 引言 320 14.2 管道 320 14.3 popen和pclose函数 325 14.4 协同进程 330 14.5 FIFO 333 14.6 系统V IPC 335 14.6.1 标识符和关键字 336 14.6.2 许可权结构 337 14.6.3 结构限制 337 14.6.4 优点和缺点 337 14.7 消息队列 338 14.8 信号量 342 14.9 共享存储 346 14.10 客户机-服务器属性 351 14.11 小结 353 习题 353 第15章 高级进程间通信 355 15.1 引言 355 15.2 流管道 355 15.3 传送文件描述符 358 15.3.1 SVR4 360 15.3.2 4.3BSD 361 15.3.3 4.3+BSD 364 15.4 open服务器第1版 366 15.5 客户机-服务器连接函数 371 15.5.1 SVR4 372 15.5.2 4.3+BSD 375 15.6 open服务器第2版 378 15.7 小结 385 习题 385 第16章 数据库函数库 386 16.1 引言 386 16.2 历史 386 16.3 函数库 386 16.4 实现概述 388 16.5 集式或非集式 390 16.6 并发 391 16.6.1 粗锁 391 16.6.2 细锁 391 16.7 源码 392 16.8 性能 409 16.8.1 单进程的结果 410 16.8.2 多进程的结果 410 16.9 小结 412 习题 412 第17章 与PostScript打印机通信 413 17.1 引言 413 17.2 PostScript通信机制 413 17.3 假脱机打印 415 17.4 源码 417 17.5 小结 434 习题 434 第18章 调制解调器拨号器 435 18.1 引言 435 18.2 历史 435 18.3 程序设计 436 18.4 数据文件 437 18.5 服务器设计 439 18.6 服务器源码 439 18.7 客户机设计 463 18.7.1 终端行规程 463 18.7.2 一个进程还是两个进程 464 18.8 客户机源码 465 18.9 小结 474 习题 474 第19章 伪终端 476 19.1 引言 476 19.2 概述 476 19.2.1 网络登录服务器 477 19.2.2 script程序 478 19.2.3 expect程序 479 19.2.4 运行协同进程 479 19.2.5 观看长时间运行程序的输出 479 19.3 打开伪终端设备 480 19.3.1 SVR4 481 19.3.2 4.3+BSD 482 19.4 pty_fork函数 484 19.5 pty程序 486 19.6 使用pty程序 489 19.6.1 utmp文件 489 19.6.2 作业控制交互 489 19.6.3 检查长时间运行程序的输出 491 19.6.4 script程序 491 19.6.5 运行协同进程 492 19.6.6 用非交互模式驱动交互式 程序 492 19.7 其他特性 494 19.7.1 打包模式 494 19.7.2 远程模式 494 19.7.3 窗口大小变化 495 19.7.4 信号发生 495 19.8 小结 495 习题 495 附录A 函数原型 497 附录B 其他源代码 512 附录C 习题答案 518 参考书目 536

19,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部