Linux C
文章平均质量分 57
Quartz010
不予置评
展开
-
Linux字符驱动程序的基本结构与函数
基本的函数与结构函数//驱动注册,注销函数module_init(void (*func));module_exit(void (*func));了两个函数,将会在执行insmod和rmmod时对传入的函数进行回调。//打开文件int open(const char *pathname, int flags, mode_t mode);//读取文件到bufint read(int fd,原创 2016-10-16 22:43:11 · 534 阅读 · 0 评论 -
atexit注册进程终止处理函数
atexit注册进程终止处理函数#include <stdlib.h>void func(void){ printf("func!\n")}int main(int argc, char **argv){ atexit(func); printf("hello !\n") return 0;}atexit注册多个进程终止处理函数,先注册的后执行(先进后出,和栈原创 2017-01-29 00:53:41 · 484 阅读 · 0 评论 -
exit()与_exit()函数的区别
注:exit()就是退出,传入的参数是程序退出时的状态码,0表示正常退出,其他表示非正常退出,一般都用-1或者1,标准C里有EXIT_SUCCESS和EXIT_FAILURE两个宏,用exit(EXIT_SUCCESS);可读性比较好一点。作为系统调用而言,_exit和exit是一对孪生兄弟,它们究竟相似到什么程度,我们可以从Linux的源码中找到答案:#def转载 2017-01-29 00:47:44 · 5587 阅读 · 1 评论 -
多进程 fork()与vfork()
文章转自 :http://blog.csdn.net/jianchi88/article/details/6985326fork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别: 1. fork ():子进程拷贝父进程的数据段,代码段 vfork ( ):子进程与父进程共享数据段 2. fork ()父子进程的执行次序不确定 vfork 保证转载 2017-01-30 17:36:26 · 351 阅读 · 0 评论 -
进程wait()与waitpid()
wait() 与 waitpid()都是在linux 保证进程间异步中通信的常用函数pit_t wait(int *status);pit waitpid(pid_t pid, int *status, int options);函数返回值为本次wait子进程的pid 当所wait的进程的pid不存在时,其返回值为 -1 而不是保持阻塞status 为输出型参数传入指针,运行后返回的为子进程的终原创 2017-01-30 23:34:52 · 331 阅读 · 0 评论 -
deamon守护进程
在linux下的一种特殊进程称为守护进程,其作用是在后台默默提供服务的,随系统结束而结束,或者是kill -9 的信号结束 daemon,表示守护进程,简称为d(进程名后面带d的基本就是守护进程) ps -aux 命令得到的程序中在tty 一栏中为?的皆为守护进程,说明不隶属于任何的控制台的程序。 一般我们在终端中执行的程序其父进程都是bash ,子进程在bash结束后,会被回收实现原创 2017-01-31 14:52:59 · 696 阅读 · 0 评论 -
进程间通信--命名管道(fifo)
区别于无名管道,只有文件描述符,只能用于父子进程的通信。 有名管道(fifo)其通信过程通过文件系统,可以达到不同进程中的通信 函数原型:#include <sys/types.h>#include <sys/stat.h>int mkfifo(const char *pathname, mode_t mode);参数1为fifo的文件路径参数2为所创建fifo的umask(文件掩码)在程原创 2017-02-02 18:00:12 · 372 阅读 · 0 评论 -
进程间通信--无名管道(pipe)
无名管道通信(pipe)无名管道通信主要用于父子进程之间,依赖fork的复制,或者vfork的共享,得以分享所得的无名管道的文件描述符。总结其性质有以下几点 1. 管道是半双工的,数据在一个时间只能向一个方向流动; 2. 需要双方通信时,习惯于建立起两个管道(关闭一个的读端和另一个的写端) 3. 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程); 4. 通信过程发生在内核中,不依赖于文原创 2017-02-02 15:54:58 · 527 阅读 · 0 评论 -
使得守护进程一次执行一个
转载自:http://www.cnblogs.com/Alarm/p/6212973.html转载理由,本打算自己写一篇,看着大家写的都不错故转之1.守护进程守护进程(Daemon)是一种运行在后台的特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。2.让程序只运行一次如果让程序只运行一次,有很多方法,此处的一种方法是创建一个名字古怪的文件转载 2017-02-02 23:47:51 · 478 阅读 · 0 评论 -
进程间通信--信号(SIG)
信号是内容受限的一种异步通信机制信号的目的:用来进程间的通信信号本质上是int型数字编号(事先定义好的);所以说是内容受限的通信机制信号是异步的(可以类比于硬件中断)常见信号介绍SIGINT 2 Ctrl+C时OS送给前台进程组中每个进程SIGABRT 6 调用abort函数,进程异常终止SIGPOLL SIGIO 8原创 2017-02-03 00:28:00 · 912 阅读 · 0 评论 -
NC反弹的小demo
一个有趣的NC反弹shell的demo#include #include #include #include #include void error(char *msg) { perror(msg); exit(0); } int main(int argc, char *argv[]) { int sockfd, portno转载 2017-07-19 18:49:57 · 510 阅读 · 0 评论 -
Linux下的进程相关编程
fork()系统调用 fork的作用是根据一个现有的进程复制出一个新 进程,原来的进程称为父进程(Parent Process) ,新进程称为子进程(Child Process)。系统中 同时运行着很多进程,这些进程都是从最初只有一个进程开始一个一个复制出来的。在Shell下输入 命令可以运行一个程序,是因为Shell进程在读取用户输入的命令之后会调用fork复制出一个新 的Shell进程,然原创 2017-01-29 00:41:02 · 332 阅读 · 0 评论 -
自旋锁和互斥锁区别
http://blog.csdn.net/kyokowl/article/details/6294341POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(Critical S转载 2017-02-10 22:31:38 · 312 阅读 · 0 评论 -
Linux LED驱动源码简析
驱动的加载与卸载函数驱动加载服务函数int major;static int first_drv_init(void){ major = register_chrdev(0, "first_drv", &first_drv_fops); // 注册驱动,其中第一个参数为0,则表示采用系统动态分配的主设备号 //第二个参数是其注册的设备名 //第三个很重原创 2016-10-17 09:57:03 · 544 阅读 · 0 评论 -
输入输出缓冲区
今天有一个(妹子),找我看了一段程序,说是奇怪没有输出什么的看了一下,重点部分是这样的.int main(int argc, char **argv){ for (int i = 0; i < 10; i++){ printf("%s", "balabala..."); sleep(1); } return 0;}它运行的情况是原创 2016-10-28 19:56:29 · 1009 阅读 · 0 评论 -
Linux学习笔记 文件读写小细节
open 函数的flagint open(const *pathname, int falg, int parm) O_RDONLY //文件只读 O_WRONLY //文件只写 O_CREAT //不存在时创建文件(存在就直接清空后覆写) O_RDWR //文件读写 O_EXCL原创 2016-10-19 20:24:17 · 338 阅读 · 0 评论 -
Linux C 的风格
编码风格在Win编程中,多用驼峰法定义变量名,及函数名 如 void SendData(void);int minValue, maxValue;在Linux编程下,风格就不一样了,多用了下划线 如int min_value, max_value;void send_data(void);在今后既然言编写Linux程序,要跟随LInux社区的风格~~ 1.对于结原创 2016-10-16 13:29:27 · 587 阅读 · 1 评论 -
网络编程--基础篇
#Socket简介是一个编程接口是一种特殊的文件描述符(everything in Unix is a file)并不仅限于TCPIP协议面向连接(Transmission Control Protocol - TCPIP)无连接(User Datagram Protocol-UDP 和 Inter-Network Packet Exchange-IPX)#Socket类型转载 2017-02-04 16:32:24 · 344 阅读 · 0 评论 -
网络编程--sockaddr 与 sockaddr_in
From: http://www.it165.NET/pro/html/201211/4066.html在初学的时候对二者甚是迷茫一会就晕了 在这里总结一句话: struct sockaddr 这个结构体是linux的网络编程接口中用来表示IP地址的标准结构体,bind、connect等函数中都需要这个结构体,这个结构体是兼容IPV4和IPV6的。在实际编程中这个结构体会原创 2017-02-04 18:00:12 · 3986 阅读 · 0 评论 -
线程基本编程——线程函数大全
索引:1.创建线程pthread_create2.等待线程结束pthread_join3.分离线程pthread_detach4.创建线程键pthread_key_create5.删除线程键pthread_key_delete6.设置线程数据pthread_setspecific7.获取线程数据pthread_getspecific8.获取线程标示符pthread_转载 2017-02-04 18:42:28 · 302 阅读 · 0 评论 -
网络编程--Address already in use 问题
初学socket编程,好容易调好一个双向tcp的简单通信,一直有些不舒服的是,当程序结束后,再次运行时 总会perror抛出Address already in use的问题网上找了找资料, bind 普遍遭遇的问题是试图绑定一个已经在使用的端口。该陷阱是也许没有活动的套接字存在,但仍然禁止绑定端口(bind 返回 EADDRINUSE),它由 TCP 套接字状态 TIME_WAIT 引起。该原创 2017-02-04 23:52:54 · 606 阅读 · 0 评论 -
网络编程--客户端返回connect refused 和 no route to host
刚刚接触了网络编程,摸索着调通了程序, 经常遇到connect函数抛出的 connect refused 和 no route to host这两个问题 总结了一下,connect refused 主要是由于所连接的sockaddr_in配置不正确导致的,也就是说,ip填错了或者端口填错了,导致的错误no route to host 这个当时如果ip填回环的话(127.0.0.1)没有问题原创 2017-02-05 00:02:52 · 21014 阅读 · 0 评论 -
总线错误与段错误
前段买了本《C专家编程》确实不错,特别是对内存思考这一章节,(O(∩_∩)O~目前我也只看到这一章节),其中讲到了总线错误和段错误: bus error(core dumped) 总线错误(信息已经转储) segmetation fault(core dumped)段错误(信息已经转储) 这种错误相信只要你在unix用c,c++这两种错误是常见又是很头疼的错误,目前我也遇到段错误的程序,至今未转载 2017-02-19 15:48:18 · 2066 阅读 · 0 评论 -
gdb基本命令 与 技巧
简介GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。同时GDB也具有例如ddd这样的图形化的调试端。 一般来说,GDB主要完成下面四个方面的功能: 启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达转载 2017-11-18 04:46:32 · 456 阅读 · 0 评论