Articles of c + +

Naglealgorithm的哪个描述是正确的?

以下是Naglealgorithm的两个简单描述。 版本1:等待对方在发送任何部分数据包之前确认先前发送的数据包 版本2:等待对方在发送任何部分分组之前确认先前发送的部分分组 版本1是我从谷歌search的信息,如维基(Nagle的algorithm)或TCP_CORK的理解的结果:超过你想知道 Version 2是我从Naglealgorithm的Linux内核实现中得到的结果 static inline int tcp_nagle_check(const struct tcp_sock *tp, const struct sk_buff *skb, unsigned mss_now, int nonagle) { return (skb->len < mss_now && ((nonagle & TCP_NAGLE_CORK) || (!nonagle && tp->packets_out && tcp_minshall_check(tp)))); } 函数tcp_minshall_check()检查是否所有发送的小包都被确认。 所以我的问题是: 哪一种描述是正确的? 如果两者都是正确的,那么Linux的修改有什么优势呢?

在Linux x86_64上使用单例C ++进行多处理

对于下面的问题,我正在寻找一个基于“纯粹的”C / C ++基础的答案,所以我将不胜感激一个非Boost的答案。 谢谢。 我有一个应用程序(例如电信基础设施服务器),它将在Linux环境(一个用于日志logging,一个用于定时器pipe理,一个用于协议消息传递,一个用于消息处理等)时产生几个进程。 它在Gentoo的x86_64环境中。 事情是,我需要一个单身人士可以从所有的进程访问。 这与在Linux上使用say,POSIX线程的multithreading不同,因为所有POSIX线程使用相同的地址空间,但是使用由fork()函数调用生成的多个进程时,情况并非如此。 当使用相同的地址空间时,单例就是所有线程中的相同地址,并且问题得到了平凡的解决(使用众所周知的保护,这对于所有人来说都是旧帽子)。 我喜欢通过fork()生成的多个进程提供给我的保护。 回到我的问题,我觉得正确的方法是在共享内存中创build单例,然后将共享内存的句柄传递给调用任务。 我想象下面的(SomeSingleton.h): #include <unistd.h> #… <usual includes> #include "SomeGiantObject.h" int size = 8192; // Enough to contain the SomeSingleton object int shm_fd = shm_open ("/some_singleton_shm", O_CREAT | O_EXCL | O_RDWR, 0666); ftruncate (shm_fd, size); sharedMemoryLocationForSomeSingleton = mmap (NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, […]

内部内核结构不能分配错误?

当我运行我写的程序时,我得到以下两个错误消息(它们的多个实例)。 程序很大,所以不能在这里显示。 无论如何,任何想法什么样的编程错误可以导致这些错误? 请注意,我在我的程序中同时使用了mmap和mprotect 。 Internal kernel structures could not be allocated. mprotect: Cannot allocate memory

我可以编写什么程序来冻结/挂起我的程序来testing看门狗定时器?

我可以将哪些C ++代码添加到我的程序中,这将实际上冻结我的程序,以便我可以testing我的看门狗定时器。 而且我怎么会导致我的操作系统也冻结。 谢谢!

gettext的效率:内存中的翻译

我有一个embedded式系统与Flash和一个非常低端的CPU和较less的RAM。 我想知道使用.MO文件gettext语言翻译的效率。 为了进行语言环境语言string获取,每次gettext从flash读取MO文件时,首先将完整的MO二进制文件加载到RAM中,并从那里执行语言环境string提取? 如果MO文件(由于有很多string会很大〜1Mb)总是加载到RAM中,所以会消耗掉我的RAM。

如何find“我的”lib目录?

我正在Linux下开发一个C ++程序。 我想把一些东西(具体来说,LLVM位码文件,但这不是重要的)在库中,所以我想要以下目录结构: /somewhere/bin/myBin /somewhere/lib/myLib.bc 我如何findlib目录? 我试图计算argv[0]的相对部分,但是如果/somewhere我的PATH位于我的PATH , argv[0]将只包含myBin 。 有什么方法可以得到这条路? 或者我必须在编译时设置它? GNU自动工具如何处理这个? 如果我将–prefix选项提供给./configure会发生什么情况? 编辑:在我的情况下,词库是有点误导。 我的库包含LLVM位码,所以它不是一个实际的(共享的)对象文件,只是我想从我的程序打开的一个文件。 您可以将其视为图像或文本文件。

连接到IPv4映射的IPv6地址失败

我试图使用IPv6套接字连接到IPv4地址使用IPv4映射的IPv6地址,在Linux(debian-lenny-64 2.6.26-2-amd64) #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <errno.h> #include <stdlib.h> #include <stdio.h> int main(int argc, void **argv) { struct addrinfo *sa; struct addrinfo *ra; int err = getaddrinfo("2001:DB8::2", 0, 0, &sa); int fd = socket(sa->ai_family, SOCK_DGRAM, 0); int v6only = 0; err = setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (void *)&v6only, sizeof(v6only)); err = bind(fd, sa->ai_addr, […]

阻止Linux发送USB条形码扫描器字符到控制台

对于一个客户,我写了一个中间件让他通过以太网适配器访问串口或者通过networking的串口,然后使用web服务读取数据。 他最近要求增加对从条形码扫描器读取数据的支持,这是我直接从设备读取事件的东西(/ dev / input / eventX或/ dev / input / by-id / xyz)。 条形码扫描仪直接连接到服务器,数据正在通过我的networking服务器公开的networking服务获得。 所有的工作正常,除了条形码被Linux控制台收回! 我如何“阻止”(停止)系统发送东西到控制台? 注意:没有X11 / Xorg或没有别的,服务器是一个控制台唯一的机器! 条形码由在Android平板电脑上执行的JavaScript(jsonp)驱使

从C ++使用netlink的最好方法是什么?

在C ++中用户空间发送和接收netlink消息的最佳方式是什么? 我不想用C.我想连接inet_diag模块。

如何使doxygen创build“仅包含依赖关系图…”仅适用于网页(不适用于tex / PDF)?

所以,虽然SVG是可缩放和可浏览的 ,看起来凌乱,但一般: 在PDF文件中 Include dependency graph (第195页)看起来确实很乱: 我自动生成我的documentatoion 在Linux上通过这样的脚本通过像这样的命令: doxygen cd release/latex/ pdflatex refman.tex makeindex refman.idx pdflatex refman.tex 这为我生成HTML和PDF文档。 我如何改变我的doxygen文件或脚本,以便在我的tex / PDF文件中没有“包含依赖关系图”,同时仍然将它们放在HTML文档中?