linux 多线程编程--线程的创建 线程概念典型的UNIX进程可以看作只有一个控制线程:一个进程在某一个时刻只做一件事情。有了多个线程后,在程序中可以时线程处理各自独立的任务,这样做的好处有许多。 1. 简化处理异步事件的代码; 2. 线程比进程更方便做数据共享; 3. 可以提高程序的吞吐量; 4. 方便改善程序响应时间每个线程都包含有表示执行环境所必需的信息,其中包括进程中标识线程的线程ID、一组寄存器值、栈、调度...
APUE 习题3-2 实现dup2,要求不使用fcntl函数。 int mydup2(int oldfd, int newfd){ int tfd = 0; if (newfd { err_sys("newfd } if (newfd == oldfd) { return oldfd; }
解决Native atomics support not found问题 今天用arm-none-linux-gnueabi交叉编译libmysqclient.so,出现Native atomics support not found问题进入mysql-connector-c-6.16-src的include/my_atomic.h,里面有#if defined(_MSC_VER)# include "atomic/generic-msvc.h"#el
解决UDT中内存下不去的问题 使用UDT库,编写简单的网络通信程序,发现了一个问题,关闭一部分连接后,程序占用内存并没有变化。 比如先连接500个,再连接另500个,先关掉后面500个,程序占用内存降一半,再关掉500个,程序占用内存降到0.1。然而,如果先关掉前面500个,程序占用内存不会发生变化,只有等再关掉后面500个,程序内存才会降到0.1。 换个顺序就降不了,这很奇怪,很“玄学”。
C语言调用curl库抓取网页图片 思路是先用curl抓取网页源码,然后以关键字寻找出图片网址。#include #include #include #include void get_key_from_str(char *origin, char *str1, char *str2, char *key);int main(int argc, char **argv){
解决undefined reference to `__poll_chk@GLIBC_2.16' 出现这个错误,是系统的glibc版本太低了,需要更新到http://ftp.gnu.org/gnu/glibc/下载新版本的glibc,也不用太高,我选择glibc-2.20.tar.gz 解压完毕后./congigure --prefix=/opt/glibc-2.20make && make install 在出现 undefined r
交叉编译总结 libosscore.a libcurl.a libmysqlclient.a 把工程文件交叉编译到arm上运行,着实花费了一番功夫。首先遇到的错误是 X uses VFP register arguments, B does not百度了一下,发现是硬浮点和软浮点的问题,原先是思路是改变X的编码方式,迁就于Y,后来怎么弄都不行,改变思路,用armv7-linux的编译器重新编几个库。1.libosscore.a下载OSS-master.zip这个
linux批量删除进程 在虚拟机用脚本跑了几十个client程序用来测试服务器,然后发现参数设置错误,得重来,就傻眼了,不知道怎么关这么多client进程,总不能一个一个关。还好,学习一下,想出了以下的命令。 ps -ef|grep client|grep -v grep|cut -c 9-15|xargs kill -9 很快就批量删掉了client进程 |:管道,左边的
linux cpu居高不下 调试 今天调试程序,使用top命令后,发现程序的cpu占有率很高,一直在99,这很可怕,所以来调试。使用top命令,得如下结果PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1997 root 20 0 358m 71m 3208 S 99.1 7.2 81:53.50 test1 root 20 0 24332 204
shell mysql命令 传参数 难点主要在参数的传递方式吧,不过查资料后发现很简单。1.使用-e参数传递命令,适用于简单语句 mysql -uuser -ppasswd -e "create database dbtest;"2.使用EOF传递复杂语句 mysql -uuser -ppasswd create database dbtest; us
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'解决 安装上mysql后,报 Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock',试了网上的方法都没有用,于是打开/etc/my.cnf查看。看到这么一段:# The MySQL server 26 [mysqld] 27 port = 3306
ubuntu下apache2 安装 配置 卸载 CGI设置 SSL设置 一、安装、卸载apache2 apache2可直接用命令安装 sudo apt-get install apache2 卸载比较麻烦,必须卸干净,否则会影响apache2再安装 (1) sudo apt-get --purge remove apache2 sudo apt-get --purg
添加自定义MIB的三种方法 我所知道的添加自定义MIB的方法有三种1.静态加载,将生成的.c和.h文件加入到相应的位置,重新编译snmp库,优点是不需要修改配置文件,缺点是每次添加都得重新编译;2.动态加载,将生成的.c和.h文件再编译成.so库,修改snmpd.conf配置文件。优点是每次添加不需要重新编译,缺点是必须支持dlmod命令;3.子代理扩展,将生成的.c和.h文件编译成可执行程序,运行该程序
samba服务器的安装 转自 http://blog.csdn.net/a921800467b/article/details/8274611参考了http://www.linuxidc.com/Linux/2011-07/38996.htm http://blog.163.com/coffee_666666/blog/static/1846911142012527114
CMake交叉编译 如果你的英文比较好,那么可以看这里:http://www.cmake.org/Wiki/CMake_Cross_Compiling,这是CMake官方网站上一篇介绍如何交叉编译的文章,我也是主要参考这篇文章完成了我的交叉编译。但是我的交叉编译过程不是翻译它的,是根据我自己交叉编译的过程,从了解CMake到完成交叉编译写的,容易入门,不涉及深入研究。 转载请注明原出处: http://hi
交叉编译libcurl 下载curl-7.44.0,解压并进入目录。 ./configure --prefix=$HOME/develop/crosstool-ng/x-tools/armxscalecurl --build=i686-pc-cygwin --host=arm-linux CC=arm-xscale-linux-gnueabi-gcc --enable-staticmake make inst
./configure -build,-host,-target设置 build:执行代码编译的主机,正常的话就是你的主机系统。这个参数一般由config.guess来猜就可以。当然自己指定也可以。host:编译出来的二进制程序所执行的主机,因为绝大多数是如果本机编译,本机执行。所以这个值就等于build。只有交叉编译的时候(也就是本机编译,其他系统机器执行)才会build和host不同。用host指定运行主机。target:这个选项只有在建立交叉编译环境的