-
-2 votes0 answers1138 views
空字符串来自recv()返回
我正在写一个小的c socket程序 . 但是,对recv()的调用表示收到了32个字节的数据,但是如下所示调用fprintf会向控制台显示一个空行 . 打败我的是数据实际返回但打印空行 . 我是否有可能为fprintf使用错误的格式说明符? messagesize = recv(socketHandle, recvbuffer, sizeof(recvbuffer), 0); fprintf(... -
59 votes14 answers115 views
Unix上的递归mkdir()系统调用
在读取具有该名称的Unix系统调用的mkdir(2)手册页之后,看起来该调用不会在路径中创建中间目录,只会创建路径中的最后一个目录 . 是否有任何方法(或其他功能)来创建路径中的所有目录,而无需手动解析我的目录字符串并单独创建每个目录? -
3 votes3 answers601 views
Unix系统编程 - 以编程方式解压缩文件
我需要做的是解压缩一个文件,( . gz或.z),读取第一行并根据第一行读取做一些事情 . 但是C标准库似乎没有提供这样做的方法 . 这是一种独立于平台的方式吗? -
4 votes2 answers1148 views
跨源文件进行类型检查
我花了很多时间调试一个问题,结果是由两个源文件引起的,包括两个不同顺序的头文件 . 其中一个头定义了_FILE_OFFSET_BITS到64,另一个头文件包含<sys / types.h>,它将off_t定义为32或64位长,具体取决于_FILE_OFFSET_BITS的设置 . 我在下面列举了这种情况的一个简短例子 . 这是在x86_32 Linux(Debian unstable和... -
3 votes2 answers368 views
子进程中运行的程序不循环
我有一个关于从孩子那里阅读stdout的父进程的具体问题 . 我的问题是,当我运行程序时,子程序应该在循环中多次执行一个新程序,但它只运行一次并退出到父进程 . 子进程正在运行一个向stdout输出消息的简单程序 . 提前致谢 . #include <sys/types.h> #include <stdio.h> #include <string.h> #inc... -
1 votes1 answers1750 views
unix网络编程
我想使用UDP并行发送不同端口号的两个不同的数据包 . 我可以使用单个套接字()或者我应该创建另一个套接字吗?有人可以给我一些想法 . 提前致谢 -
3 votes1 answers1728 views
使用C [TCP]从TCP套接字无法正确接收数据
我正在使用Ubuntu 12.04 32位版本我编写了一个程序来从TCP客户端接收XML文件 . 同一程序也通过unix域套接字从另一个进程接收数据 . 为此我使用poll()系统调用 . 我的问题是,有时我没有正确地获取XML数据,或者有时也没有得到它 . 但由于我使用的是TCP,如果有数据丢失,客户端就会知道 . 但是客户没有显示任何错误 . 有人可以告诉我为什么会这样吗? 我可以提供一些代码... -
0 votes1 answers1354 views
linux中的我的stat()函数有什么问题[重复]
这个问题在这里已有答案: stat() error 'No such file or directory' when file name is returned by readdir() 2个答案 我正在尝试使用stat()列出文件信息(包括目录等) 当我将“ . ”(当前目录)作为argv [1](例如$ . / a.out . )时,它工作正常 . 但是当我给出其他目录如“..”,“/”等... -
0 votes1 answers1069 views
用于在Unix系统编程中对命令进行deamonize的SIGHUP信号处理
我正在读一本关于Unix系统编程的书 . 本书中有一个创建守护进程的函数 . 部分代码对我来说不是很清楚,特别是以下内容: struct sigaction sa; .... /* *Become a session leader to lose controlling TTY. */ if ((pid = fork()) < 0) { err_quit("%s: c... -
0 votes1 answers1622 views
如何确定环绕声音频信号的声道映射(声道到声道分配)
我正在研究一个我正在处理环绕声信号(Dolby Digital 5.1)的系统 . 因为它是一个实时应用程序,我以前不知道音频信号有什么样的 Channels 映射 . 有各种不同的配置(FL,C,FR,LF,BL,BR)(FL,FR,C,BL,BR,LF)等等 . 到目前为止,我认为可能存在一些模式,其中音频编解码器以(.ac3,.dts,.aac)编码音频信号,但不确定 . DD 5.1仅提出... -
3 votes1 answers1168 views
在android中使用webrtc中的噪声抑制模块
我正在android中开发一个Speaker Identification应用程序,我想在使用扬声器识别算法进行分析之前处理来自麦克风的音频输入 . 我遇到了 noise suppression module in WebRTC . 我已经使用JNI在android中设置了它 . 我对模块中的函数 WebRtcNs_Process 有疑问 . 在头文件中,它表示 int WebRtcNs_Pro... -
14 votes4 answers212 views
Linux上是否有等效的.def文件用于控制共享库中的导出函数名称?
我正在Ubuntu 9.10上构建一个共享库 . 我想从库中只导出我的一部分函数 . 在Windows平台上,这将使用模块定义( .def )文件来完成,该文件将包含从库中导出的函数的外部和内部名称列表 . 我有以下问题: 如何将共享库的导出函数限制为我想要的(即等效的.def文件) 使用.def文件作为示例,您可以为函数提供与其内部名称不同的外部名称(用于防止名称冲突以及重新修饰损坏的名... -
0 votes1 answers1217 views
Android共享库的节大小总和大于共享的lib大小
在Android中,如果我使用objdump工具分析共享库,我会观察到以下内容: 共享库中节大小的总和小于二进制文件大小 . 这是可以理解的,二进制大小= ELF Headers 大小程序 Headers 大小节大小节 Headers 大小 . 但是对于另一个共享库,节大小的总和大于共享库文件大小本身!这似乎非常令人惊讶 . 有没有这种情况会发生? 使用的命令:捕获截面尺寸:prebuilts /... -
1 votes1 answers1026 views
如何在提供库的地址时获取共享库中符号的地址?
我正在学习如何在Linux上使用C / C中的共享库 . 我遇到了一个我不知道如何解决的问题 . 让's say I have a shared library and an executable. However I don' t知道库's name or file location (so I can' t dlopen 它) . 我只能找到库映射到可执行文件内存的地址范围 . 有没有办法以... -
13 votes2 answers1014 views
OpenCV cvFindContours - 如何分离轮廓的组件
我一直在玩OpenCV,并且有很多试验和错误已经设法学习如何检测照片中的圆圈(硬币) . 一切都很好,除非我直接将硬币放在一起(如下所示,忽略了第二张图像倒置的事实) . 看起来因为硬币是如此接近,cvFindContours认为它们是同一个对象 . 我的问题是如何将这些轮廓分成单独的对象,或者获得已经分离的轮廓列表 . 我用于cvFindContours的参数是: cvFindContour... -
0 votes2 answers858 views
在openCv中连接组件提取
任何人都可以建议一个openCV方法,提取8位单通道帧中的连接组件? cvBlobs适合这个吗?除此之外,我想在C代码中使用它 . -
1 votes0 answers390 views
MATLAB / Simulink - C MEX S函数:总线信号和涉及指针的传统C结构之间的转换
目前我正在MATLAB / Simulink(R2017b)中将遗留C代码实现为C MEX S函数 . 我已经在Entry at MathWorks-MATLAB Answers上放了一个重复的条目 . 遗留函数作为一般规则指针指向涉及指向其他结构的指针的结构,示例遗留代码: func.h: typedef struct { double* param; }T_DATA_1; t... -
114 votes30 answers1036 views
编码实践,使编译器/优化器能够制作更快的程序
许多年前,C编译器并不是特别聪明 . 作为一种解决方法,K&R发明了 register 关键字,提示编译器,将这个变量保存在内部寄存器中可能是个好主意 . 他们还使第三级运营商帮助生成更好的代码 . 随着时间的推移,编译器逐渐成熟 . 他们变得非常聪明,他们的流量分析使他们能够更好地决定寄存器中的值,而不是你可能做的 . register关键字变得不重要了 . 由于alias问题,FORTRAN... -
74 votes3 answers932 views
为什么GCC使用NOP填充功能?
我已经和C一起工作了一段时间,最近才开始进入ASM . 当我编译一个程序时: int main(void) { int a = 0; a += 1; return 0; } objdump反汇编有代码,但在ret之后nops: ... 08048394 <main>: 8048394: 55 push %... -
174 votes4 answers298 views
为什么GCC在实现整数除法时使用乘以奇数的乘法?
我一直在阅读 div 和 mul 汇编操作,我决定通过在C中编写一个简单的程序来看它们的运行情况: 文件division.c #include <stdlib.h> #include <stdio.h> int main() { size_t i = 9; size_t j = i / 5; printf("%zu\n",j);... -
11 votes1 answers1857 views
带有指定初始化程序的MSVC12(VS2013)中可能存在的编译器错误
使用VS2013 Update 2,我偶然发现了一些奇怪的错误消息: // test.c int main(void) { struct foo { int i; float f; }; struct bar { unsigned u; struct foo foo; double d; ... -
-3 votes2 answers293 views
C编程创建动态数组
到目前为止,您已创建了固定大小的静态数组 . 动态数组可以使用结构和malloc()来改变它们的大小 . 阵列已满:分配新的内存块 . 将数据从一个指针复制到另一个指针 . 释放旧指针 . 将新指针分配给动态数组结构 您只需实现函数来初始化动态数组并展开动态数组 . 按照注释查看您需要编码的内容 . 需要代码的注释有TODO:写在其中memcpy(void * dest,void * src,in... -
1 votes2 answers1178 views
如何正确地求和数组的元素w / out得到大的随机输出
我写了两个函数并在main中调用函数 . 函数1 - 我编写了一个函数,它返回void并获取一个int *(指向整数数组的指针)或int [],以及int(表示大小) . 该函数需要将数组的所有元素初始化为非零值 . 函数2 - 我编写了另一个函数,它返回int并获取const int *(指向整数数组的指针)或int [],以及int(表示大小) . 该函数应该对数组的所有元素求和并返回总和... -
10 votes2 answers1524 views
子集的不同总和数
我有一组N,对于N> 3,不同的整数,问题是找到给定集合的3个子集的所有不同总和 . 3子集是基数为3的子集 . 我知道愚蠢的方法是对所有可能的总和进行立方搜索,然后整理所有重复项 . 有没有更有效的方法来做到这一点?我在C编程 编辑:我想知道一般的更快的算法,如果说元素的数量增加 . -
1 votes0 answers368 views
clang无法与libstdc链接
HelloWorld已编译但可以't be linked with libstdc++ with clang 3.3. libstdc++ headers are found and the file is compiled. Though i' m使用 clang++ 链接并传递 -Lpath ,其中 libstdc++.a 位于找不到 std . 我已尝试使用相同的路径和LD_LIBRARY... -
105 votes17 answers1361 views
按照C / C中的正态分布生成随机数
有谁知道如何在C / C中正常分布后轻松生成随机数? http://www.mathworks.com/access/helpdesk/help/toolbox/stats/normrnd.html 我不想使用任何Boost . 我知道Knuth详细谈论了这个问题,但我现在还没有他的书 . -
4 votes2 answers690 views
stdlib中random()的分布是什么?
该手册页声称C标准库中的random函数"returns a value between 0 and RAND_MAX." 不幸的是,它没有说明这个随机函数的分布是什么 . 根据经验,我们可以测量它是统一的,但是没有文档,我不能肯定当我在应用程序中使用它时它永远不会改变 . 分发是否记录在任何地方? -
27 votes5 answers1428 views
如何控制popen stdin,stdout,stderr重定向?
我很困惑popen()如何在unix中重定向子进程的stdin,stdout和stderr . 关于popen()的手册页在这方面不是很清楚 . 电话 FILE *p = popen("/usr/bin/foo", "w"); 分叉子进程并执行带参数“-c”,“/ usr / bin / foo”的shell,并重定向此shell的stdin(重定向foo... -
0 votes1 answers1252 views
Windows - 在子进程中继承控制台文件句柄
我有一个Windows应用程序( subsystem=windows ,而不是控制台应用程序) . 我正在该应用程序中创建一个控制台,然后创建一个子进程 . 当我创建控制台时,我使控制台文件句柄可继承(见下文) . 当我创建子进程时,我将 CreateProcess 的 bInheritHandles 参数设置为 TRUE . 我希望子进程能够从控制台读取和写入,但是我收到错误 0x06 , i... -
2 votes2 answers83 views
CppUTest:如何将更多数据传递给特定的模拟调用?
我开始在一些C / C项目中使用CppUTest . 特别是 Mock 扩展声音很好,但我目前正在努力如何以正确的方式设置模拟 . 假设用于抽象网络套接字通信的低级类 . My first method: size_t CMockSocket::recv(void* buf, size_t len) { return (size_t) mock().actualCall("recv&...