- 博客(17)
- 资源 (24)
- 收藏
- 关注
原创 在linux中开发守护程序
linux下的守护程序(daemon)对应于windows下的服务程序。长期运行于后台。守护程序的启动和停止通常为(以apache2为例):service apache2 start/stop在前面的博客中有一篇《基于linux TCP的select服务器》,本文以该服务器的代码为基础,将其改造为一个daemon程序,实现用service *** start / stop来控制其启动和停止
2016-03-31 21:39:30 1034
原创 linux中gethostbyname和gethostbyaddr的使用
gethostbyname:根据主机名获取ipgethostbyaddr:根据ip获取主机名示例如下:#include "net_common.h"int main(){ char *name = "localhost"; //INET_ADDRSTRLEN值为16,用来标识ipv4地址长度 char str[INET_ADDRSTRLEN]; /
2016-03-30 00:04:28 3072
原创 在linux中使用cmake构建共享库(动态链接库)
cmake是一种跨平台的构建工具。它可以生成各种平台支持的makefile和project文件。在windows下,一般都是用visual studio来管理工程。事实上,就本人来说,使用cmake主要是为了避免在linux下手写makefile的繁琐。cmake在ubuntu下的安装:sudo apt-get install cmake下面来看如何使用cmake构建动态库
2016-03-29 02:34:17 17324 4
原创 C++11中使用shared_ptr和unique_ptr管理动态数组
在C++11中,若使用shared_ptr管理一个动态数组,则需手动制定一个删除器。auto sp = std::shared_ptr(new int[len], [](char *p){delete []p;});但是这样使用有点麻烦,经过查阅资料,发现可以使用shared_ptr为动态数组创建一个工厂函数。具体使用如下:#include #include #includ
2016-03-27 16:13:21 18836 1
原创 C++11智能指针之使用shared_ptr实现多态
指针除了管理内存之外,在C++中还有一个重要的功能就是实现多态。代码很简单,还是使用虚函数。与原生指针并没有什么区别:#include #include using namespace std;class parent{public: virtual void showinfo() { cout << "parent info" << endl;
2016-03-27 13:37:45 11841
原创 C++11智能指针之shared_ptr的使用(1)
先来看一段简单的代码:#include #include using namespace std;void test_smartpointer(shared_ptr sp){ (*sp)++;}void test_pointer(int *p){ (*p)++;}int main(){ int n1 = 5, n2 = 5; shared_ptr sp (n
2016-03-27 01:30:16 997
原创 C++ 11 查看硬件线程个数等信息
#include #include #include #include using namespace std;mutex mtx;void showinfo(){ lock_guard lk(mtx); cout<<"hardware thread is "<<thread::hardware_concurrency()<<endl; cou
2016-03-26 02:59:09 1805
原创 pthread和std::thread中条件变量的使用
程序很简单,使用两个线程对一个全局变量轮流进行累加。先来看pthread的版本:#include #include pthread_mutex_t lock;pthread_cond_t cond;int condition=0;unsigned long long g_count=0;void work1(void * arg){ while (1) {
2016-03-25 14:59:59 1224
原创 pthread的和std::thread的线程分离
#include #include #include #include #include #include #include #include #include #include void work1(void *arg){ char *mem1 = (char *)malloc(100); free(mem1);}void work2(void *
2016-03-25 01:36:11 2582 1
原创 pthread线程清理
#include #include #include #include #include pthread_mutex_t lk = PTHREAD_MUTEX_INITIALIZER;pthread_t thread_id2;void work1(void *arg){ pthread_mutex_lock(&lk); puts("thread 1 workin
2016-03-23 01:34:23 606
原创 pthread线程取消示例
#include #include #include #include #include pthread_mutex_t lk = PTHREAD_MUTEX_INITIALIZER;pthread_t thread_id2;void work1(void *arg){ pthread_mutex_lock(&lk); puts("thread 1 workin
2016-03-22 01:00:29 283
原创 pthread mutex使用的一些思考
#include #include #include #include #include #include #include #include #include pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;int g_num = 0;void work1(void *arg){ while(1) {
2016-03-16 01:35:29 503
原创 linux下posix有名信号量的简单使用示例
#include #include #include #include #include #include #include int main(){ sem_t *s = sem_open("log", O_CREAT | O_EXCL , 0666, 0); if(s == SEM_FAILED) { perror(
2016-03-13 23:37:34 967 1
原创 linux高级IO之readv/writev
readv和writev可以同时操作多个缓冲区。 函数的使用很简单, 以readv为例: #include #include #include #include string.h>int main(){ char str0[2] = {0x00}; char str1[2] = {0x00}; struct iovec buff[2] = {
2016-03-12 23:43:44 905
原创 linux splice使用示例 (使用socket服务于单用户的回射服务器)
#define _GNU_SOURCE#include #include #include #include #include #include#include #include void check(int res, const char *fucname){ if(res < 0) { perror(fucname)
2016-03-12 16:03:19 1374
原创 linux sendfile示例
#define _GNU_SOURCE#include #include #include #include #include #include#include #include void check(int res, const char *fucname){ if(res < 0) { perror(fucname)
2016-03-12 15:53:54 1100
原创 linux vmplice 示例
#define _GNU_SOURCE#include #include #include #include #include #include #include #include string.h>#include #include void check(int res, const char *fucname){ if(res < 0)
2016-03-12 15:50:53 514
《Windows网络编程技术》高清PDF版+随书源码
2016-04-04
TCPIP高效编程.改善网络程序的44个技巧].(Effective.TCPIP.Programming).(美)Jon.C.Snader.扫描版.pdf )
2016-03-01
FTP服务器库
2014-09-28
C程序设计语言.pdf
2012-05-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人