Linux应用编程与网络编程
IT悟物穷理IT
作家格拉德威尔在《异类》一书中指出:“人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成超凡的必要条件”。他将此称为“一万小时定律”。要成为某个领域的专家,需要10000小时,按比例计算就是:如果每天工作八个小时,一周工作五天,那么成为一个领域的专家至少需要五年。
展开
-
系统调用和库函数的区别
首先,要说一下两者的概念:系统调用:是操作系统为用户态运行的进程和硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口,即就是设置在应用程序和硬件设备之间的一个接口层。可以说是操作系统留给用户程序的一个接口。再来说一下,linux内核是单内核,结构紧凑,执行速度快,各个模块之间是直接调用的关系。放眼望整个linux系统,从上到下依次是用户进程->linux内核->硬件。其中系统调用接口是转载 2016-06-15 12:58:23 · 390 阅读 · 0 评论 -
lseek计算文件长度
#include stdio.h>#include stdlib.h>#includesys/types.h>#includesys/stat.h>#includefcntl.h>#includeunistd.h>int main(int argc,char *argv[]){ int fd,length;转载 2016-08-23 07:36:54 · 957 阅读 · 0 评论 -
Linux可重入函数
最近,项目要求可能需要做博通的交换芯片的驱动程序,涉及到多用户同时进行操作,和大量的数据处理,因此在进行代码架构的时候需要进行前期简单的验证设计。考虑到一点就是程序设计的可重入性。经过简单的搜索,在维基百科和其他朋友的帖子里找到了相关概念。为了帮助自己今后理解,特地将此概念加上自己的理解整理在此。一、维基百科解释 1 若一个程序或子程序可以安全的被并行执行,则称其为可重入(reen转载 2016-08-23 10:10:11 · 323 阅读 · 0 评论 -
用C语言实现大小端判断
摘自:http://blog.csdn.net/fei324/article/details/6887608大端小端的概念(以下概念来自网络)端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile End转载 2016-09-14 12:28:19 · 680 阅读 · 0 评论 -
一个基础的文件读写(复习)
//一个基础的文件读写 #include #include #include #include #include #include int main(int argc,char *argv[]) { int fd=-1; int ret=-1;原创 2016-08-24 16:08:37 · 243 阅读 · 0 评论 -
用dup,测试标准输出的重定位
系统调用dup和dup2能够复制文件描述符。dup返回新的文件文件描述符(没有用的文件描述符最小的编号)。dup2可以让用户指定返回的文件描述符的值,如果需要,则首先接近newfd的值,他通常用来重新打开或者重定向一个文件描述符。他的原型如下:#include int dup(int oldfd);int dup2(int oldfd,int newfd);原创 2016-08-25 10:06:11 · 648 阅读 · 0 评论 -
fcntl模拟dup(原创),及fcntl的相关知识(转载)
fcntl模拟dup(原创),及fcntl的相关知识(转载)原创 2016-08-25 10:40:47 · 261 阅读 · 0 评论 -
进程和线程的差别
微软亚洲技术中心的面试题!!!1.进程和线程的差别。线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.(4)系统开销转载 2016-09-04 17:15:44 · 167 阅读 · 0 评论 -
fopen函数和fread函数、fwrite函数
fopen函数和fread函数、fwrite函数fopen(打开文件)相关函数 open,fclose表头文件 #include定义函数 FILE * fopen(const char * path,const char * mode);函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。mode有下列几种形态字符串:r 打开只读转载 2016-08-25 17:25:04 · 651 阅读 · 0 评论 -
union/指针,测试大小端
//大小端测试程序:高位放在低地址为大端,高位放在高地址为小端//一般在c51中为大端,在ARM中为小端模式/*#includeunion myunion{ int a; char b;};int main(void){ union myunion c; c.a=1; printf("c.b=%d.\n",c.b);//如果c.b=1则为小端模式 pri原创 2016-09-19 11:00:09 · 446 阅读 · 0 评论 -
stat获取文件属性+原创测试程序
stat, fstat, lstat - get file status ---------------------------------------------------- #include #include #include int stat (const char原创 2016-08-27 09:08:14 · 1020 阅读 · 0 评论 -
access测试文件是否可读/可写
Linux内核总是根据进程的有效用户ID和有效组ID来决定一个进程是否有权访问某个文件。因此,在编写调整用户ID的程序时,在读写一个文件之前必须明确检查其用户是否原本就有对此文件的访问权限。为了实现这种确认,需要使用access函数。一般形式为;#includeint access(const char *pathname,int mode);其中,pathname原创 2016-08-27 09:12:21 · 1010 阅读 · 0 评论 -
chmod更改文件权限+测试代码
变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取,写入,执行3种一般权限来区分,另有3种特殊权限可供运用,再搭配拥有者与所属群组管理权限范围。您可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果您对符号连接修改权限,其改变会作用在被连接的原始文件。权限范围的表示法如下: u:User,即文件或目录的拥有者。原创 2016-08-27 09:20:25 · 942 阅读 · 0 评论 -
open函数的flag详解
2.1.文件读写权限 (1)linux中文件有读写权限,我们在open打开文件时也可以附带一定的权限说明(譬如O_RDONLY就表示以只读方式打开,O_WRONLY表示以只写方式打开,O_RDWR表示以可读可写方式打开);当我们在open文件时附带了某种权限后,打开的文件就只能按照该权限来操作。2.2.更改文件内容 (1)当我们open已经存在并且内部有内容的文件会出现4种情况转载 2016-08-22 20:30:16 · 1849 阅读 · 0 评论 -
线程同步之条件变量
与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。条件的检测是在互斥锁的保护下进行的。如果一个条件为原创 2016-08-30 18:20:34 · 605 阅读 · 0 评论 -
Linux常用多线程函数
Linux多线程函数用得比较多的是下面的3个pthread_create(),pthread_exit(),pthread_join();它们都是在头文件之中。编译时需要加静态库-lpthread下面是函数的说明: pthread_create是UNIX环境创建线程函数int pthread_create(pthread_t *restrict tidp,const原创 2016-06-21 16:05:16 · 318 阅读 · 0 评论 -
Linux下时间编程(综合知识+综合编程):time,ctime,strftime,localtime,gmtime,gettimeofday
一:strftime() 函数将时间格式化NAME strftime - format date and timeSYNOPSIS #include size_t strftime(char *s, size_t max, const char *format, const struct tm原创 2016-08-27 15:46:38 · 1037 阅读 · 0 评论 -
rand获取随机数(转载)+测试代码(原创)
1 srand(设置随机数种子) 相关函数 rand 表头文件 #include 定义函数 void srand (unsign原创 2016-08-27 16:20:36 · 742 阅读 · 0 评论 -
return、exit和_exit的区别+atexit
#include #include void func1(void) {printf("this is func1.\n"); }void func2(void) {printf("this is func2.\n"); }int main(void) { printf("he原创 2016-06-12 20:02:43 · 368 阅读 · 0 评论 -
Linux前台后台进程切换(转载)
linux前后台进程切换(转) (2012-05-10 12:31:20)转载▼标签: 杂谈分类: linux操作系统from:http://blog.csdn.net/java3344520/article/details/7324874Linux 前后台进程切换当你用shell启动一个程序时,往往他转载 2016-08-29 08:45:14 · 8351 阅读 · 0 评论 -
Linux下信号signal
//signal函数绑定一个捕获函数后会自动执行绑定的捕获函数,//并且把信号编号作为传参传递给捕获函数/* #include typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); RETURN VALUE signal()原创 2016-08-29 10:23:43 · 357 阅读 · 0 评论 -
Linux下alarm,sigaction,pause
/* #include unsigned int alarm(unsigned int seconds); RETURN VALUE alarm() returns the number of seconds remaining until any previously scheduled alarm was due to be delivered原创 2016-08-29 11:33:33 · 756 阅读 · 0 评论 -
O_NONBLOCK,fcntl 非阻塞io读取键盘鼠标
1.fcntl #include #include int fcntl(int fd, int cmd, ... /* arg */ ); The file status flags and their semantics are described in open(2). F_GETFL (void) Get t原创 2016-08-29 20:14:36 · 3516 阅读 · 0 评论 -
poll读取键盘鼠标,多路复用io
poll描述概要: #include int poll(struct pollfd *fds, nfds_t nfds, int timeout);The set of file descriptors to be monitored is specified in the fdsargument, which is an array原创 2016-08-29 20:21:02 · 541 阅读 · 0 评论 -
异步io
1何为异步IO(1)几乎可以认为:异步IO就是操作系统用软件实现的一套中断响应系统。(2)异步IO的工作方法是:我们当前进程注册一个异步IO事件(使用signal注册一个信号SIGIO的处理函数),然后当前进程可以正常处理自己的事情,当异步事件发生后当前进程会收到一个SIGIO信号从而执行绑定的处理函数去处理这个异步事件。2涉及的函数:(1)fcntl(F_GETFL、F_SETF原创 2016-08-29 20:35:24 · 553 阅读 · 0 评论 -
线程同步之信号量(sem_init,sem_post,sem_wait)
信号量和互斥锁(mutex)的区别:互斥锁只允许一个线程进入临界区,而信号量允许多个线程同时进入临界区。不多做解释,要使用信号量同步,需要包含头文件semaphore.h。主要用到的函数:int sem_init(sem_t *sem, int pshared, unsigned int value);,其中sem是要初始化的信号量,pshared表示此信号量是在进程间原创 2016-08-30 17:08:30 · 16617 阅读 · 2 评论 -
信号同步之互斥锁(pthread_mutex_init,pthread_mutex_lock,pthread_mutex_unlock)
一、互斥锁互斥量从本质上说就是一把锁, 提供对共享资源的保护访问。 1. 初始化: 在Linux下, 线程的互斥量数据类型是pthread_mutex_t. 在使用前, 要对它进行初始化: 对于静态分配的互斥量, 可以把它设置为PTHREAD_MUTEX_INITIALIZER, 或者调用pthread_mutex_init. 对于动态分配的互斥量,原创 2016-08-30 18:08:57 · 13335 阅读 · 0 评论 -
opendir,readir对目录的操作+原创测试代码
1. opendir()头文件 #include #include函数原型 DIR* opendir (const char * path ); (获取path子目录下的所由文件和目录的列表,如果path是个文件则返回值为NULL)功能 打开一个目录,在失败的时候返回一个空的指针。返回值(DIR) DI原创 2016-08-27 09:26:08 · 1432 阅读 · 0 评论