
Linux编程
文章平均质量分 69
东升
这个作者很懒,什么都没留下…
展开
-
pread
``c``````creturn 1;close(fd);return 1;close(fd);return 0;```翻译 2023-06-09 10:24:23 · 197 阅读 · 0 评论 -
ioctl之用户空间与内核的通信
内核部分代码在include\uapi\linux\sockios.h文件内增加如下消息定义#define SIOCGIFBRCM 0x8984 /* */#define SIOCSIFBRCM 0x8985 /* */ 在net\socket.c文件内增加static DEFINE_MUTEX(brcm_ioctl_mutex);static int (*br原创 2017-04-12 16:45:55 · 1508 阅读 · 0 评论 -
多线程与inet_ntoa
今天在调BUG发现一个很奇怪的问题,描述如下: void file_do_transmit_firmware(evutil_socket_t fd, short event, void *arg) { struct sockaddr_in peeraddr; pthread_t thread_id; socklen_t socklen; int s, clientfd; c原创 2017-04-12 17:09:25 · 1384 阅读 · 0 评论 -
netlink 通信广播demo
最近在做工程时,用到了内核间通信,需要把内核部分得到发送至用户空间。下面给出demo例子:分为内核部分和用户空间部分:首先在内核部分增加一个netlink消息类型#define NETLINK_URL 23创建内核的netlink socket static struct sock *nlfd; struct netlink_kernel_cfg cfg =原创 2017-04-11 10:27:27 · 1197 阅读 · 0 评论 -
异步接收子线程的返回值
上次在做版本升级时遇到一个这样的需求:服务器需要向客户端发送版本文件,采用的是TCP + pthread来实现,其中,发送结果需要返回给主线程。这让我想起了子进程的操作退出后会给主进程发送一个信号,而主进程会在收到信号后调用WaitPid来获取返回值。而在线程里面退出就没有类似的信号发送出来,刚开始感觉无从下手,后面浏览了libevent代码后便有有了灵感,使用eventfd可以解决这个问题。原创 2016-12-20 13:16:30 · 1353 阅读 · 0 评论 -
libubox库avl树的使用例子
1. 定义一棵avl树struct avl_tree services;2. 初始化avl树int avl_strcmp(const void *k1, const void *k2, void *ptr){ return strcmp(k1, k2);}avl_init(&services, avl_strcmp, false, NULL);3. 插入结点原创 2016-12-20 10:26:26 · 2586 阅读 · 0 评论 -
exec系列函数
转载地址:http://www.cnblogs.com/memset/p/linux_exec_function_family.html转载 2017-01-06 15:26:48 · 268 阅读 · 0 评论 -
在64位机器上使用返回值为地址的函数要注意声明函数体
最近发现一个64位机器上出现段错误的问题。现象: 执行如下的代码,在32位的机器上是OK的,但是64位出现了段错误。#include #include #include #include int main(int argc, char * argv[]){ struct in_addr addr; char *p; int i =0; struct hos原创 2016-11-07 13:59:18 · 1993 阅读 · 0 评论 -
使用fscanf获取固定格式内容
需求:读取/proc/net/arp文件的ip和mac信息#include #include char *arp_get(){ FILE *proc; char ip[16]; char mac[18]; if (!(proc = fopen("/proc/net/arp", "r"))) { return NULL; } /* Skip first line */原创 2016-12-26 15:08:11 · 2003 阅读 · 0 评论 -
简单定时器实现
经常会遇到这样的功能,需要开辟一个现场同时循环的跑一个任务,下面是简单实现的代码 调用select 加超时时间 #include #include #include #include #include void thread_client_timeout(const void *arg){ int count = 0; while (1) { struc原创 2016-12-26 13:50:30 · 316 阅读 · 0 评论 -
在shell中向应用程序的socket发送信息
今天在做一个东东,即在shell脚本上面wget一个文件成功后通知应用程序,想到的方法有如下:1. 使用ubus,需要在应用程序中增加一个服务对象,写回调函数2. 创建一个控制程序,通过unix socket的方式让控制程序与后台进程通信,然后脚本执行控制程序。这种方法编码更多 随后在组长的帮助下,用了一个很简单的命令通过telnet的方式就可以了。首先后台应用程序创建一个tc原创 2016-11-23 13:33:24 · 11234 阅读 · 0 评论 -
在openwrt上使用libevent库
定时器的使用#include ...#include struct event *ev;static void levent_udp_timeout(evutil_socket_t fd, short what, void *arg){ printf("hello timeout\n"); struct timeval timeout; timeout.tv_sec原创 2016-11-21 16:46:34 · 2604 阅读 · 0 评论 -
使用socketpair进行父子进程通信
代码比较简单#include #include #include #include int main (){ int fd[2]; int r = socketpair( AF_UNIX, SOCK_STREAM, 0, fd ); if ( r < 0 ) { perror( "socketpair()" ); exit( 1 ); } if ( fork()原创 2016-11-03 14:19:58 · 1607 阅读 · 0 评论