unix程序设计/网络编程
wks19891215
喜欢C/C++
展开
-
Linux信号屏蔽以及挂钩处理
Linux信号屏蔽以及挂钩处理原创 2023-03-11 22:19:35 · 196 阅读 · 0 评论 -
socket中的网络字节序/本地字节序互相转换函数。
(1)inet_addr :转换字符串到地址结构体 (2)inet_ntoa 转换地址结构体到字符串 (3)htons ,h=host,n=network.常用于绑定之前地址结构体的设置,将本机端口转为网络字节序。 (4)ntohs ,h=host,n=network.常用于与对方通信后,在需要使用对方端口的时候,将其中(收到的对方端口为网络字节序)转为主机字节序。 (5)inet_pt原创 2016-01-24 00:48:07 · 5169 阅读 · 1 评论 -
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 · 968 阅读 · 1 评论 -
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 · 1375 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 · 2583 阅读 · 1 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
在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 · 17326 阅读 · 4 评论 -
socket获取信息函数
获取本地主机名:int gethostname( char FAR* name, int namelen);根据socket文件描述符,获取(本地/远程)地址信息结构体int getsockname( SOCKET s, struct sockaddr FAR* name, int FAR* namelen);获取远程地址。(传入的参数s必须是accept原创 2016-01-25 00:01:31 · 606 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
在linux中开发守护程序
linux下的守护程序(daemon)对应于windows下的服务程序。长期运行于后台。守护程序的启动和停止通常为(以apache2为例):service apache2 start/stop在前面的博客中有一篇《基于linux TCP的select服务器》,本文以该服务器的代码为基础,将其改造为一个daemon程序,实现用service *** start / stop来控制其启动和停止原创 2016-03-31 21:39:30 · 1034 阅读 · 0 评论 -
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 · 284 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 · 906 阅读 · 0 评论 -
基于linux TCP的select回射服务器
#include #include #include in.h>#include #include #include select.h>#include #include #include #include string>#include using namespace std;//int->fd//string->ip&portunor原创 2016-02-20 14:37:18 · 473 阅读 · 0 评论 -
linux ipc之匿名管道
#include #include #include #include #include #define MAX 100void Pipe(int pipefd[2]){ int res = pipe(pipefd); if(res != 0) { puts("create pipe error"); }}原创 2016-01-27 01:29:35 · 293 阅读 · 0 评论 -
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 阅读 · 0 评论