- 博客(14)
- 资源 (3)
- 收藏
- 关注
原创 windows 平台的信号处理
windows 平台也是有信号处理接口的,而且与 unix 平台很相似。void (__cdecl *signal( int sig, void (__cdecl *func ) (int [, int ] ))) (int);不过支持的信号类型有限,只有下面这几种。sig valueDescriptionSIGAB
2012-07-29 09:10:38 2582
原创 带超时的等待子进程,timed_wait
如果想等待子进程结束,在发送了结束信号(父子进程约定一个退出信号),等待一段时间(比如2秒钟),就强制杀死子进程(SIGKILL),怎么实现呢?首先想到使用一个线程,在线程中sleep 2 秒,然后杀死子进程,如果在这之前子进程已经退出,只不过会在kill时收到一个错误。方法确实有效,不过代价好像大了点。
2012-07-29 09:09:04 1434
原创 关于 android 子进程域名解析失败的问题
场景:android ndk 开发两个进程,一个主进程,一个子进程,主进程创建子进程主进程和子进程都调用getaddrinfo做域名解析现象:主进程域名解析一切OK子进程失败,错误码:HOST_NOT_FOUND 一直以为是android的bug,去网上找,没有任何相关的问题和解答。后来想到创建子进程使用了自己写的一个分装类,不知道直接用fork + exec情
2012-07-29 09:06:26 4535
原创 windows 套接字子进程继承
网络编程模式中,有一种是多进程模式,主进程侦听,收到连接后,启动子进程处理请求,每个连接一个子进程。在linux中通过fork很容易实现,因为fork时子进程继承父进程的文件描述符,套接字也是一种文件描述符。在windows句柄也能够继承,但是必须通过外部方法告诉子进程句柄值,可以通过命令行参数或者环境变量的方式传递。怎么获取套接字的句柄呢?其实套接字本身就是一个句柄,只是平常使用re
2012-07-26 14:49:26 2493
原创 windows下获取进程网络链接状况(包括打开的侦听端口号)
windows下一般都是通过IP Helper系列API接口获取网络状态,获取链接状况的接口是GetExtendedTcpTableDWORD GetExtendedTcpTable( __out PVOID pTcpTable, __inout PDWORD pdwSize, __in BOOL bOrder, __in ULONG ulAf, _
2012-07-26 14:16:45 4752
原创 linux下获取进程网络链接状况(包括打开的侦听端口号)
在做一个本地服务(服务器端和客户端在同一个机器上,通过回环端口直接访问)时,因为端口可能会被其他程序占用,服务器端会尝试找到一个可用端口,客户端需要逐个尝试连接各个端口,并且与服务器端完成一个验证过程,才能最终确认服务器端的侦听端口。即使双方可以约定从某个端口开始,每次加1尝试,提高发现效率,但是实现起来还是要费一番心事的。有没有办法直接获得服务器端程序侦听的端口号呢?我们知道netsta
2012-07-24 17:22:41 6915 1
原创 各平台共享内存的实现方式
UNIX在内存共享问题上,UNIX历史上主要有两个标准:Posix与System V,相比来说Posix标准更符合统一风格要求,与文件系统结合,更易于使用。除了这两个标准,还有一种基于磁盘文件映射的机制。PosixPosix标准提供一种共享内存文件设备,通过访问共享内存文件设备来实现进程间的数据共享。共享内存文件是通过shm_open创建,通过shm_unlink删除,这和普通文件的创
2012-07-23 13:55:32 2469
原创 安全且平台兼容的进程互斥锁
在《进程互斥锁》中,我们看到了实现进程互斥锁的几个常见方案:Posix信号量、System V信号量以及线程锁共享,并且分析了他们的平台兼容性以及严重缺陷。这里要介绍一种安全且平台兼容的进程互斥锁,它是基于文件记录锁实现的。1、文件记录锁UNIX编程的“圣经”《Unix环境高级编程》中有对文件记录锁的详细描述。下载链接:http://dl02.topsage.com/club/co
2012-07-11 20:20:44 3904 2
原创 进程互斥锁
进程间共享数据的保护,需要进程互斥锁。与线程锁不同,进程锁并没有直接的C库支持,但是在Linux平台,要实现进程之间互斥锁,方法有很多,大家不妨回忆一下你所了解的。下面就是标准C库提供的一系列方案。1、实现方案不出意外的话,大家首先想到的应该是信号量(Semaphores)。对信号量的操作函数有两套,一套是Posix标准,另一套是System V标准。Posix信号量sem_t *
2012-07-11 18:13:14 28497 2
原创 播放器适配经验总结——Android
Android的流媒体协议支持不太好,标准只支持RTSP和MP4 over HTTP。因为MP4头部大,启动会比较慢,另外MP4也不适合做直播。当然基于Android的开放性,完全可以自己做一个播放器,难点是要做解码和显示的适配,Android机型太多,这个适配工作量比较大。Android升级到4.0版本应该支持HLS,目前也有一些设备厂商在2.x版本上支持的HLS。但是要做统一的产品,还是只能用
2012-07-06 12:38:20 4866
原创 播放器适配经验总结——IOS
IOS平台统一使用HLS协议,包括M3U8文件和分段TS文件1、抖屏现象:播放中画面动作抖动,好像画面的顺序错乱范围:Mp4文件转成TS,没有问题,ASF转成TS文件,有该现象原因:ASF没有cts_delta字段,TS(PES)中的PTS直接使用DTS,H.264中帧的顺序是DTS顺序,与显示顺序是不同的,B帧会出现在P帧前面,但是在后面显示方案:自己根据帧率和帧的顺序,计算
2012-07-06 11:26:41 8372
原创 MPlayer Win32版本的H.264解码问题
下载了MPlayer-1.1源码并用mingw编译成功了,运行播放了几个视频文件,都OK。然而在测试了更多的视频文件时,出问题了,一直会输出下面的错误消息:A:454786.5 V:454786.5 A-V: 0.031 ct: 0.034 0/ 0 45% 15% 1.6% 23 0[h264 @ 0xdc3f00]Reference 6 >= 3[h264 @ 0xdc
2012-07-04 16:17:03 4729
原创 如何让windows平台多线程DLL完整退出
如果你在windows平台开发动态链接库,并且在链接库启动了内部线程,那么你很有可能发现加载你的DLL的程序在退出时会死锁,有时候虽然主程序界面没有了,但是打开任务管理器,发现进程还在。虽然用户不觉得异常,但是最求完美的你,一定想让程序完整的退出,下面与你分享一下我这几天与这个问题奋战的经验总结。最近做播放器插件开发,基于directshow、vlc、mplayer框架,各做了一个插件,三
2012-07-04 13:36:26 3224 1
WinRT 环境下缺失 Windows API 模拟实现
2013-09-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人