Articles of c + +

Windows上的Cmake不会添加共享库path(适用于Linux)

我一直在Linux上使用CMake和Eclipse一段时间,一直在处理包含众多可执行文件和共享对象的多个目标项目。 我使用了源代码构build和在Linux上的二进制文件被放到自己的目录。 当我在linux上执行这个操作时,eclipse以某种方式能够find共享对象,并且很好地运行可执行文件,但是在Windows上这种情况不会发生。 在Windows上,我不得不添加一个指向dll的PATH环境variables,或者我可以将其构build到一个bin和lib目录中(尽pipe我过去曾经用过一个我忘记的问题,使我想避免这个问题) 。 为什么这在Windows上运行不同于linux? 这是我失踪的设置还是这只是不工作? 构build本身正在完美工作。 我正在使用MinGW,Eclipse Kepler和Windows 7 64位。 提前致谢。

堆栈限制和线程之间的关系

在Linux实现(或任何操作系统)中,ulimit -s <value >与堆栈大小(在线程级别)之间的关系是什么? 是<number of threads > * <each thread stack size >必须小于< stack size assigned by ulimit command >有效alignment? 在下面的程序中 – 每个线程分配char [PTHREAD_STACK_MIN]并创build10个线程。 但是,当ulimit被设置为10 * PTHREAD_STACK_MIN时,它不会因为中止而造成内存溢出。 对于stacksize的一些随机值(远小于10 * PTHREAD_STACK_MIN),它是核心转储。 为什么这样? 我的理解是,stacksize表示由进程的所有线程总和占用的堆栈。 线程函数 #include <cstdio> #include <error.h> #include <unistd.h> #include <sys/select.h> #include <sys/time.h> #include <sys/resource.h> using namespace std; #include <pthread.h> #include <bits/local_lim.h> const unsigned […]

检查正在运行的程序中的内存泄漏

出于对检查内存泄漏的好奇心,我有个疑问。 作为一个在过去的一两年中经常使用valgrind来检查代码中的内存泄漏的人,我突然想到在程序生命周期之后 ,它只能检测到丢失/未logging的内存。 所以,有鉴于此,我在想,如果你有一个长期运行的程序, malloc()是间歇性的,在应用程序退出之前不会free() ,那么潜在的吃内存(不一定是通过泄漏 )是巨大的,使用这些工具是不可观察的,因为他们只检查程序的生命周期。 是否有类似GDB的工具可以在运行时停止应用程序,并检查在应用程序生命周期中是否被引用的内存?

Python的ctypes从Linux上的libc调用reboot()

我试图通过ctypes从Python中的libc调用rebootfunction,我只是不能得到它的工作。 我一直在引用man 2 reboot页面( http://linux.die.net/man/2/reboot )。 我的内核版本是2.6.35。 下面是来自交互式Python提示符的控制台日志,我试图让我的机器重启 – 我做错了什么? 为什么不是ctypes.get_errno()工作? >>> from ctypes import CDLL, get_errno >>> libc = CDLL('libc.so.6') >>> libc.reboot(0xfee1dead, 537993216, 0x1234567, 0) -1 >>> get_errno() 0 >>> libc.reboot(0xfee1dead, 537993216, 0x1234567) -1 >>> get_errno() 0 >>> from ctypes import c_uint32 >>> libc.reboot(c_uint32(0xfee1dead), c_uint32(672274793), c_uint32(0x1234567), c_uint32(0)) -1 >>> get_errno() 0 >>> libc.reboot(c_uint32(0xfee1dead), c_uint32(672274793), […]

Mac和Linux上qsort_r的不同声明

我们来看看Linux中的函数qsort_r (/usr/include/stdlib.h): typedef int (*__compar_d_fn_t)(const void *, const void *, void *); extern void qsort_r (void *__base, size_t __nmemb, size_t __size, __compar_d_fn_t __compar, void *__arg) __nonnull ((1, 4)); 让我们来看看Mac中的函数qsort_r (/usr/include/stdlib.h): void qsort_r(void *, size_t, size_t, void *, int (*)(void *, const void *, const void *)); 正如你所看到的,这些声明是彼此不同的(参数序列)。 这是令人惊讶的! 抱怨某个地方解决这个问题会有效吗?

读(fd,NULL,0); 它有什么作用? 它是明确的吗?

我在几个程序中看到了下面的说法,大部分/全部似乎都是针对Linux的。 rv = read(fd, NULL, 0); 在一些程序中,它是在一个循环中,在一个单一的声明。 它究竟做了什么? 手册页说,像这样的调用可能会或可能不会检查错误… 回报价值的意义是什么? 什么types的文件描述符被支持? 如果rv==0如何区分“没有错误”从例如“套接字closures”。

长型64位linux

很简单的问题家伙,但也许我只是忘记了一些东西。 在64bit的linux中,长度是8bytes是正确的吗? 如果是这样的话,我想设置第64位,我可以做到以下几点: unsigned long num = 1<<63; 然而,每当我编译这个,它给了我一个错误,说我左移超过宽度。 另外,如果我想采取长types的第一个32位(没有符号扩展),我可以这样做: num = num&0xFFFFFFFF; 或者如何: num = (int)(num); 谢谢。

GNU-getline:关于EOF的奇怪行为

testing 为了findgetline()在面对EOF时的行为,我写了下面的testing: int main (int argc, char *argv[]) { size_t max = 100; char *buf = malloc(sizeof(char) * 100); size_t len = getline(&buf, &max, stdin); printf("length %zu: %s", len, buf); } 而input1是: a b c Ctrl-D Enter 结果: length 4: abc //notice that '\n' is also taken into consideration and printed input2: a b c […]

Linux的蓝牙l2ping信号强度(不连接?)

对于这里的任何Linux的BlueZ / BT专家: 我正在寻找一种方式来“知道”已知的BT设备(已知的BDADDR),如果他们在范围内,我想知道近似的信号强度。 我知道我可以先运行l2ping,然后build立到设备的连接,最后检查rssi或链接质量,如果连接没有先配对。 然而,我正在寻找的是一种获得信号强度的方式,而无需先连接到设备。 完美的是来自l2ping回复数据包的信号强度测量,但我不知道这个信息是否可用,并沿着堆栈传递。

将ASP.Net Web Forms项目部署到Fedora 24

这是我目前的设置: 我的本地计算机:这是我创build和编程我的ASP.Net WebForms项目与启用Cloudflare灵活SSL在Windows 10上使用visual studio 2015 professional。我也有团队资源pipe理器启用意味着我的项目同步到Github和我的所有文件也存储在我自己的存储库中。 我的服务器计算机:运行Fedora 24,我已经为ASP.Net安装了dotnet CLI(又名.Net Core), apache(httpd),nginx和Mono 。 我想部署/发布和托pipe我的webforms项目在这台计算机上的默认web目录(/ var / www / html / mysite /) 问题是,dotnet cli依赖于一个project.json并且与WebForms不兼容 。 .Net核心基本上不是一个选项 。 当我使用mod_mono时,如果在使用命令xsp4 –port 9000运行服务器的情况下连接到https:// localhost:9000 / ,则会出现Error 500 (请参见下文)。 我不能使用xsp4 –port 80或xsp4 –port 443因为它声称Address is already in use即使httpd是监听这些端口的唯一进程。 请注意,我可以使用 xbuild 命令 成功构build项目 。 我如何从github或我的本地计算机上取得我的项目并将其部署到我的服务器计算机上? 我错过了什么吗? 这里是我的虚拟主机configuration参考: httpd.conf 。 启动httpd.service时,我通常不会遇到任何错误。 […]