linux c
榕树子
这个作者很懒,什么都没留下…
展开
-
[linux c]linux do_div() 函数用法
linux 内核函数原创 2024-02-06 16:12:31 · 1454 阅读 · 1 评论 -
Linux 并发与竞争--自旋锁
Linux 并发与竞争--自旋锁原创 2022-06-15 14:14:06 · 181 阅读 · 0 评论 -
Linux 并发与竞争 -- 原子操作
Linux 并发与竞争 -- 原子操作原创 2022-06-15 12:27:28 · 81 阅读 · 0 评论 -
openwrt 第一个程序--helloword
openwrt 第一个程序–helloword1.在package 下新建文件夹hellowordhelloword├── Makefile└── src ├── helloworld.c └── Makefilehelloword 文件夹下的Makefile如下:注释部分# zzk 解决找不到libc.so.6库问题############################################### OpenWrt Makefile for HelloWorl原创 2020-06-03 10:55:35 · 1290 阅读 · 0 评论 -
[c] find_pid_by_name
extern pid_t find_pid_by_name( char* pidName){ DIR *dir; struct dirent *next; pid_t pid; if ( strcmp(pidName, "init")==0) return 1; dir = opendir("/proc"); if (!dir) { printf("Cannot ope...原创 2019-11-26 10:08:59 · 483 阅读 · 0 评论 -
【编程】记录一次gdb coredump 调试经历
记录一次gdb coredump 调试经历在板子上有个进程反复挂掉重启。把coredump文件下载回开发环境。命令形式:gdb xxx cored-xxx /projects/hnd/tools/linux/hndtools-mips-linux-uclibc-4.9.3/usr/bin/mips-ugw-linux-uclibc-gdb netctrl core-netctrl-2044...原创 2018-09-28 14:51:40 · 1286 阅读 · 0 评论 -
【编程】linux多线程同步机制——屏障
屏障(barrier)是用户协调多个线程并行工作的同步机制。屏障允许每个线程等待,直到所有合作线程都到达某一点,然后从该点继续执行。int pthread_barrier_init(pthread_barrier_t *restrict barrier, const pthread_barrierattr_t * restrict attr, unsigned int count);int ...原创 2018-09-29 16:51:12 · 436 阅读 · 0 评论 -
【编程】链表
链表#include <stdio.h>#include <string.h>#include <stdlib.h>typedef struct node{ int a; struct node* next;}Node,*Link_list;void link_add(Link_list * head,int a){ Link原创 2018-10-09 14:23:33 · 219 阅读 · 0 评论 -
【转载】gdb 调试利器
1. gdb 调试利器GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c++程序员,gdb是必不可少的工具;1.1. 启动gdb对C/C++程序的调试,需要在编译前就加上-g选项:$g++ -g hello.cpp -o hello调试可执行文件:$gdb program也就是你的执行文件,一般在...转载 2018-10-09 15:35:27 · 154 阅读 · 0 评论 -
【转载】CGDB的安装与使用
原网址:https://blog.csdn.net/ran337287/article/details/72794585由于需要在linux上对C++进行调试,因此安装了CGDB。【0】什么是CGDB?“ CGDB is a curses (terminal-based) interface to the GNU Debugger (GDB). Its goal is to be light...转载 2018-10-09 18:05:50 · 531 阅读 · 0 评论 -
【系统编程】孤儿进程,僵死进程
僵死进程:一个已经终止,但是父进程尚未对其进行善后处理(获取终止进程的有关信息,释放它仍占用的资源,父进程并没有调用wait或waitpid获取子进程的状态信息)的进程成为僵死进程。孤儿进程:父进程已经终止,而他的一个或多个子进程还在运行,称为孤儿进程,孤儿进程将被init进程所收养,并由init进程对它们完成状态收集工作。问题及危害此部分来自来自 https://www.cnblogs.c...转载 2019-05-12 22:42:53 · 191 阅读 · 0 评论 -
二维数组作为形参
二维数组作为形参demo#include <stdio.h>#include <string.h>int fun(char (*a)[32]){ printf("enter fun\n"); int i=0; for(i=0; i < 32; i++) printf("a[%d]=%s\n",i, a[i]); return 0;}int...原创 2019-07-26 10:21:43 · 487 阅读 · 0 评论 -
strcpy memcpy:结构体复制问题
结构体复制:strycpy是用来在字符串之间进行复制,而结构体是组合类型数据结构如果结构体都是标准数据类型,那么可以直接用memcpy/memmove (memmove更好,可以防止内存地址重叠))等来进行内存数据的整块复制...原创 2019-09-03 16:22:23 · 2495 阅读 · 0 评论 -
【编程】I/O复用poll函数
#include <poll.h>int poll(struct pollfd *fdarray, unsigned long nfds, int timeout)返回:若有就绪描述符则为其数目,若超时为0,若出错为-1struct pollfd { int fd; short evernts; //指定测试条件 short revents; ...原创 2018-08-17 14:41:39 · 184 阅读 · 0 评论 -
【编程】Makefile 使用模板
MakefileEXEC=wait fork_twiceOBJS = wait.o fork_twice.oCFLAGS += LDFLAGS += -L . -lzkcommonCC=gccall:share_lib $(EXEC) @echo "all done"share_lib: gcc -c zkcommon.c -fPIC gcc -o ...原创 2018-08-22 16:51:28 · 190 阅读 · 0 评论 -
【编程】信号驱动式I/O
信号驱动式的I/O对于TCP套接字近乎无用。问题在于该信号产生的太频繁,并且它的出现没有告诉我们发生了什么事情。 在UDP上使用信号驱动式I/O是简答的。SIGIO信号发生在以下情况: 数据报到时套接字 套接字上发生异步错误 signal_io.c#include "unp.h"static int sockfd;#define QSIZE 8#define MAXDG...原创 2018-08-15 14:50:43 · 899 阅读 · 0 评论 -
API 获取文件某个字段对应的整型值
获取文件某个字段对应的整型值 key:valuelong long get_file_key_integer_value(const char * path, const char *key){ FILE *fp; char buf[512]; char *p_dst = NULL; char *p_rx = NULL; long long result = 0; if(NULL原创 2017-10-27 16:38:58 · 150 阅读 · 0 评论 -
C/C++中extern关键字详解
C/C++中extern关键字详解1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这转载 2017-10-16 08:57:14 · 182 阅读 · 0 评论 -
函数指针
#include #include int hi_fun(){ printf("hi func\n");}int yes_fun(){ printf("yes func\n");}int no_fun(){ printf("no func\n");}typedef int(*p_fun)();typedef struct FUNS_T { char cmd[32]原创 2017-11-06 09:27:35 · 162 阅读 · 0 评论 -
参数处理程序
#include #include int string_to_char(char*src,char*dst){ if( sscanf(src,"%c",dst)!=1) { printf("argv[1] error\n"); return-1; } retur原创 2017-12-07 10:35:59 · 205 阅读 · 0 评论 -
linux 网络netfilter学习
学习网上有关Linux 内核hook博客。 深入Linux网络核心堆栈–netfilter详解(整理)通过hook过滤ip地址代码:/* * 安装一个丢弃所有到达的数据包的Netfilter hook函数的示例代码 */#define __KERNEL__#define MODULE#include <linux/kernel.h> #include...转载 2018-04-17 10:12:13 · 217 阅读 · 0 评论 -
【驱动学习】ioctl 函数
static int globalmem_ioctl(struct inode* inodep, struct file* filep, unsigned int cmd, unsigned long arg){ switch (cmd) { case MEM_CLEAR: /* 清除...原创 2018-04-18 14:31:47 · 285 阅读 · 0 评论 -
【C语言】动态库
0. 文件清单1. 生成 add.o2. 生成共享库 libadd.so3. 编译主程序 app4. 解决方法0. 文件清单add.c#include <stdio.h>int add(){ printf("add init\n"); return 0;}add.hint add();ma...原创 2018-05-30 16:03:51 · 313 阅读 · 0 评论 -
【转】【Linux编程】守护进程(daemon)详解与创建
【Linux编程】守护进程(daemon)详解与创建【Linux编程】守护进程(daemon)详解与创建一、概述二、守护进程的创建1、fork()创建子进程,父进程exit()退出2、在子进程中调用 setsid() 函数创建新的会话3、再次 fork() 一个子进程并让父进程退出。4、在子进程中调用 chdir() 函数,让根目录 ”/” 成为子进程的工作目录5、在子进程中...转载 2018-06-15 14:49:04 · 166 阅读 · 0 评论 -
【编码】网络编程 TCP server 并发线程版
tcp server 并发线程#include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #i...原创 2018-06-20 15:09:17 · 228 阅读 · 0 评论 -
【编程】unix socket 学习的记录
1 gcc ser.c -o ser#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <string.h>#include <stdlib.h>#include <sys/un.h>#define UN_SOCK_P...原创 2018-07-27 11:15:41 · 191 阅读 · 0 评论 -
【编程】select 网络编程demo
I/O服用典型使用在下列网络应用场合: 当客户处理多个描述符(通常是交叉式输入和网络套接字)时,必须使用I/O服用。 一个客户同时处理多个套接字是可能的,不过比较少见。 如果一个TCP服务器既要处监听套接字,又要处理已连接套接字,一般就要使用I/O服用。 如果一个服务器既要使用TCP,又要使用UCP。一般就要使用I/O服用。 如果一个服务器要处理多个服务或多个协议。 1.cli......原创 2018-08-07 16:20:08 · 1553 阅读 · 0 评论 -
单向循环链表实例
游标:循环链表中的“当前”指针,这个指针称为游标,可以通过游标访问链表中的所有元素:增加:获取游标所指的数据元素重置游标移动至下一个元素直接指定删除的节点刚开始游标为空,当插入多个节点后,游标指向第一次插入的那个节点。实例如下://circlelist.h#ifndef __CIRCLELIST_H__#define __CIRCLELIS转载 2017-03-30 14:46:17 · 369 阅读 · 0 评论