Unix C++第三方API调用
Unix C++ Third party API Call
我在C++应用程序中使用从第三方SO文件导出的API。第三方API正在向我的unix控制台写入一些消息。我假设API使用了多线程的概念,因为我可以发现进入控制台的输出是混合的(从我的程序输出,以及从这个第三方API输出),如下所示:
- 来自我的程序的消息:
My program
- 来自API的消息:
I am an API
- 最终输出:
My I am an program API
有什么方法可以把这两条消息分开吗?第三方SDK文档没有提供任何错误/消息处理机制或任何线程同步机制。
有人能帮忙吗?
线程输出同步和缓冲必须在输出它的应用程序级别上完成。您得到的东西已经交错,无法合理地分开。所有线程/进程都在向同一个文件描述符写入(更糟糕的是,如果它们使用stdout
,它们每个都有自己的输出缓冲区),所以如果应用程序没有调度它们的输出消息,那么设计就被破坏了,你几乎无能为力
它是什么样的应用程序?如果它是一个shell脚本包装器,则有可能在顶部完成并行化,并且可以正确地进行分解和缓冲。
相关文章:
- 使用Qt框架在c ++类中创建API调用
- 调用 Win32 API 函数时未定义的引用
- 程序在对mouse_event的 Windows API 调用中冻结
- 使用 Node.js N-API 调用 C 函数时,不会显示预期的输出
- 同时调用 ASIO 对象的 API 是否安全?
- 取消API使用的调用
- Lua C API 自定义打印函数,在字符串中传递空格时不调用
- 在 MySQL 连接器C++ API 中使用一个函数调用执行多个查询的正确方法是什么?
- 为什么创建进程 API 调用会导致内存访问冲突?
- 如何使用 Win32 API 从 Excel VBA 中的非"Single-Threaded Apartment"线程调用 InternetGetProxyInfo
- 引发访问冲突的 Win32 API 调用
- 父进程中的挂钩 api 调用
- 如果在 DLL 和调用应用程序中使用 GPGPU API,会发生什么情况
- E/libEGL:调用没有当前上下文的 OpenGL ES API (每个线程记录一次) - Android/SDL
- 如何监视应用程序进行的Windows系统API调用?
- 如何在 go 中调用带有 .lib 和.dll文件的预构建 API
- UNIX API 调用:使用 read() 函数打开文件并将其打印到屏幕上会增加额外的随机字符
- 从C++调用Microsoft视觉 API 时出错
- 使用JNI调用API创建一个java7JVM
- 从 Python 调用 API 时dynamic_cast失败C++