Articles of c + +

域套接字“sendto”遇到“errno 111,连接被拒绝”

我正在使用域套接字从另一个进程获取值,如A从B获得一个值,它运行好几个月。 但是最近,A在“发送”消息给B时偶尔出现“errno 111,连接被拒绝”的失败。 我检查了B域套接字绑定文件,它是存在的。 我也在另一台机器上做了一些testing,效果也不错。 那么,有没有人遇到过这个问题? 任何人都可以有一些线索在这种情况下可能是错误的吗? 非常感谢。

ftok()碰撞

我正在使用ftok()为C应用程序使用的共享内存段生成标识符。 我遇到了问题,在一个盒子里,我碰到了root使用的标识符。 我可以在这个例子中通过黑客代码修复它,但我想要一个更强大的解决scheme。 应用程序被安装到自己的逻辑卷中,并且提供给ftok的path是应用程序的二进制目录(在该lv内)。 所提供的ID从1开始,通常是六打左右。 我已经追踪到,ftok会做这样的事情: (id & 0xff) << 24 | (st.st_dev & 0xff) << 16 | (st.st_ino & 0xffff) st.st_dev / st.st_ino的组合应该是非常独特的。 但是我已经看到了一些盒子,st_dev的最低位通常是0(即st_dev数字通常是256的倍数)。 而且由于二进制目录是在一个逻辑卷中,所以不能保证inode号码与root用途不同。 有没有一个很好的解决方法 – 一个更好的替代ftok,或者设置机器的方式,使st_dev数字将更有用的ftok?

命令用.a文件编译c文件

我有几个.c文件和一个.a目标文件。 我应该使用什么命令与gcc编译到一个exe文件? 如果我们使用makefile,它将如何?

一个空的堆竞技场的开销

我的工具是Linux,gcc和pthreads。 当我的程序从多个线程中调用新的/删除的时候,当这个堆存在争用的时候,就会创build'竞技场'(参见http://www.bozemanpass.com/info/linux/malloc/Linux_Heap_Contention.html )。 我的程序全天候运行,而且两周后仍然偶尔会创build竞技场。 我认为最终可能会有像线程一样多的领域。 ps(1)显示惊人的内存消耗,但我怀疑只有一小部分实际映射。 什么是一个空的舞台上的“开销”? (如果所有的分配被限制在传统堆中,每个竞技场使用的内存多less?) 有没有办法在n场之前强制创作? 有什么办法可以迫使空的场地遭到破坏吗?

链接到所有链接到一个共同的静态库的多个共享库

假设你有2个共享库lib1.so和lib2.so,它们都有静态链接到它们的libcommon.a。 如果您要dynamic链接lib1.so和lib2.so,编译器是否会抱怨模糊的符号引用? 或者是编译器足够聪明,知道libcommon符号在lib1和lib2之间共享,并允许您dynamic链接两者?

用于c / c ++的交互式控制台编程?

所以我写了一个小程序,它接受用户的命令,然后显示输出(连接到服务器之后)。 这是一个交互式的控制台。 但是,在使用mongodb和redis命令行客户端(在控制台/terminal上交互工作)之后,似乎必须有一个库,提供诸如logging用户input的function,接受向上/向下按键来浏览命令历史,以及制表符完成框架(不知道如何工作,但是)。 什么是这样一个理想的图书馆使用?

如何在CentOS Linux上检查GPU

build议在Linux上用命令lspci | grep VGAfindGPU lspci | grep VGA 。 它在Ubuntu上工作正常,但是当我尝试在CentOS上使用它时,它说lspci命令没有find。 我怎样才能在CentOS上查看GPU卡。 请注意,我不是机器的pipe理员,我只能从命令行远程使用它。 我打算使用GPU作为该机器上的GPGPU,但首先我需要检查它是否有一个。

我在哪里可以学习如何使C ++程序与操作系统(Linux)交互

我是一个C ++初学者。 我想创build与操作系统交互的小程序(使用Kubuntu Linux)。 到目前为止,我还找不到任何教程或手册来获取C ++与操作系统的接口。 在PHP中,我可以使用命令exec()或反引号操作符来启动通常在控制台中执行的命令。 我如何在C ++中做类似的事情? 我如何让我的C ++程序执行任何其他命令? 我怎样才能得到这样的命令的输出? 谢谢。

在Linux中隐藏C程序的命令行参数

如何隐藏在Linux中运行的C程序的命令行参数,使其不能被其他用户通过“w”,“ps auxwww”或类似命令看到?

我不明白为什么编译器给我错误的代码

我有以下C代码,这对我来说看起来非常正确。 但是,clang编译器(实际上gcc或任何其他C编译器)则认为不然。 typedef struct { struct timeval td_start; struct timeval td_end; } Timer; void startTimer( struct Timer* ptimer ) { gettimeofday( &(ptimer->td_start), NULL ); } void stopTimer( struct Timer* ptimer ) { gettimeofday( &(ptimer->td_end), NULL ); } 编译器给出以下waring&error消息。 任何想法这里有什么不对? ./timing.h:14:25: warning: declaration of 'struct Timer' will not be visible outside of this function [-Wvisibility] void […]