c++
songjunwei1
这个作者很懒,什么都没留下…
展开
-
进程间通讯的一些思考
思考的开始: 最近写了一个项目,这个项目我初期规划是有10个进程以上(进程的多少和硬件中仪器的多少有关)。其中一个是主进程、一个是日志窗口进程这两个进程之间要通讯是一对一的。还有主进程和个仪器进程通讯是一对多的。 主进程和日志进程通信,采用的是共享内存通讯。这个没什么错误,因为我限制了,日志进程先于主进程完全启动,而且日志进程只能有主进程才能关闭。这个我在共享内存中维持一个队列,主进程只管写,日志进程只管读。这里面没遇到什么问题。 但在主进程和各各仪器进...原创 2021-02-02 13:06:50 · 110 阅读 · 0 评论 -
多进程间使用共享内存进行通讯
在写一个项目中,有一个进程是信息显示进程,其他的进程错误消息或通知消息会传到信息显示进程中,信息显示窗口显示出来。如果使用socket进行信息传递可行。把信息显示窗口作为服务端,产生信息的进程作为客户端。如果使用共享内存进行通信,就有些问题,可能是我本人水平有限。先写下来慢慢解决。一 一个进行写信息,一个进程读信息如何做到这两个进程间同步,想到的办法是,在每条信息的前面加个标志位,例如1代表可写,0代表可读。写进程先判断标志位如果是1代表可写,那么就在该内存中写入信息,写完后把该标..原创 2020-11-05 14:40:15 · 448 阅读 · 0 评论 -
2020-10-12获取网卡的MAC地址
因为项目中需要使用liscence,所以就想到了使用网卡的MAC地址加密。这里需要获取网卡的MAC地址。首先使用的是Netbios()函数获取MAC地址,但是发现只获取了正在联网使用的那个网卡的MAC地址,不能获取所有的网卡MAC地址。通过这个网站https://www.codeguru.com/cpp/i-n/network/networkinformation/article.php/c5451/Three-ways-to-get-your-MAC-address.htm使用GetAdapter原创 2020-10-12 10:53:20 · 499 阅读 · 0 评论 -
2020-09-07 在写程序时需要注意的地方
以前没有写过64位和32位通用的程序,这次写的程序写好以后才被告知要32和64位通用。如果把一些的代码直接编译成64位会出错。在修改了过程中总结了一些避免出错的方法。1、写程序时不要使用魔数,如1,2,3,4这些,要使用一些有意义的代替,比如int的长度是4,就不能使用4,要使用sizeof(int),指针的长度是4或8,就要使用sizeof(char*)等。我就是这一步使用错了,导致编译的程序运行结果出错。2、在使用api函数时,他的返回值是什么类型,你就用什么类型。 例如返回值是i...原创 2020-09-07 09:12:43 · 192 阅读 · 0 评论 -
一个或多个重定义符号
在mfc编程中,建了一个PublicFunction.h头文件,在这里有void Logging_printf_1(char * pText){ HANDLE hPipe; DWORD WriteNum; if (WaitNamedPipe(PIPE_NAME, NMPWAIT_WAIT_FOREVER) == TRUE) { hPipe = CreateFile(PIPE_N...原创 2019-09-25 10:49:33 · 877 阅读 · 0 评论 -
win10+vs2015+sdk+wdk驱动开发环境安装
安装了好多遍驱动开发环境都不成功,最终成功了一次。win10 64位vs2015windows sdk 10.0.15版本wdk 10.0.15版本测试环境win7 64位根据别人的教程尝试过多次vs2017不过都失败了,不知道为什么。...原创 2019-08-29 13:51:49 · 736 阅读 · 0 评论 -
MFC中CreateCompatibleBitmap的边界
在MFC的单文档框架下,视图是CSroolView类,在视图类的ondraw函数中利用创建的内存设备上下文来绘制图形,memDC.CreateCompatibleDC(NULL);bitmap.CreateCompatibleBitmap(pDC,width,height);在这里这个width和height有没有限制大小,这两个变量是int型受类型的限制,当然这不是要讨论的,我的...原创 2019-02-22 10:16:45 · 499 阅读 · 0 评论 -
在vs2015的c++中项目调用Python脚本
1,配置项目属性2,添加头文件<Python.h>添加代码Py_Initialize(); //调用Python之前要初始化PyRun_SimpleString("import sys"); //加入需要Python代码中需要的库,这些库也可以直接添加在Python文件里。PyRun_SimpleString("sys.path.append('./')");//同上...原创 2019-01-28 17:03:48 · 944 阅读 · 1 评论 -
函数的返回值类型
函数的返回值1, 返回引用类型在函数返回值是引用这一类型的时候,在别处看到的准则是要求在函数参数中,包含有以引用方式或指针方式需要作为返回值的参数。但在实验中int ,char等这些类型即使没有这个参数也可以返回正确的值如:int& fun(){Int a = 1;return a;}int main(){Int &a =fun();…}这里int&a...原创 2019-01-22 15:39:53 · 15752 阅读 · 0 评论 -
并发,并行的一些浅显认识
1, 一个单核cpu一个时刻只能处理一条线程。2, 单核cpu使用超线程技术可以在一个时刻处理两条线程超线程技术并不是使单核cpu产生两个核心,只是提供两个逻辑线程。效果并没有双核的强。3,2核4线程,4核8线程,这些都是使用超线程技术才多出一倍的线程数。有以上信息来看并发,并行:并发:当多个线程在操作的时候,如果只有一个单核CPU没有超线程,同一时刻只能有一个线程被执行,但是多个线...原创 2019-01-22 13:00:02 · 133 阅读 · 0 评论 -
std::string类型变量比较的问题
std::string型变量比较是,最好是两个std::string变量比较如std::string和char*比较涉及到\0的问题,std::string str(“asdf”);str == “asdf”这个比较是相等的char szTmp[4] ; 1memcpy(szTmp,”asdf”,4);str == szTmp这个是不相等的cha...原创 2019-01-21 15:43:45 · 2850 阅读 · 0 评论 -
在unix上写代码的一些心得(1)
1, 切换root用户和普通用户进入root: sudo su退出root进入普通用户:exit2, 打包,常用的打包程序是tartar -cf tall.tar 1.cpp 把1.cpp打包到tall.tar中tar -cf tall.tar *.cpp 把所有.cpp文件打包到tall.tar中tar -rf tall.tar 1.cpp 把1.cpp文件增加到tall.t...原创 2019-01-21 13:36:40 · 325 阅读 · 0 评论