Linux应用编程
文章平均质量分 65
玖零大壮
这是个还有梦的傻小子
展开
-
Linux进程间通信(六)---信号量通信之semget()、semctl()、semop()及其基础实验
这个信号量理解起来是有点不容易啊,我看书看了好几遍才知道怎么回事。在讲这一节信号量之前,我还是想先说几个小知识点,这也是我在学习完后最终理解的“精华”,哈哈!信号量是干啥的? 信号量就是用来解决进程间的同步与互斥问题的一种进程间通信机制。同步与互斥的通俗理解 这两个名词咱们从字面上就能理解。举个例子吧,在创建子进程时,你是怎么保证父子进程执行的先后顺序呢?我在以前的时候是通原创 2013-06-13 16:57:02 · 26360 阅读 · 16 评论 -
Linux进程间通信(八)---消息队列之msgget()、msgsnd()、msgrcv()及其基础实验
/********************************************************************** 2019年6月26日声明:本博客资源下载积分最开始为免费的,我也不知道为什么有的很高了。*如果有问题加我微信:wensong2048,(加我备注来源以及需求,否则不通过,谢谢)**********************************...原创 2013-06-27 18:00:14 · 11665 阅读 · 6 评论 -
Linux进程间通信(七)---共享内存之shmget()、shmat()、shmdt()及其基础实验
/********************************************************************** 2019年6月26日声明:本博客资源下载积分最开始为免费的,我也不知道为什么有的很高了。*如果有问题加我微信:wensong2048,(加我备注来源以及需求,否则不通过,谢谢)**********************************...原创 2013-06-27 09:56:36 · 15256 阅读 · 3 评论 -
关于Segmentation fault (core dumped)的错误
牢骚 话说这个错误很可恶啊,昨天下午一直都有,吃完饭回来又弄,一直弄到最后要回宿舍的时候,寻思着再试一次吧,竟然查到错误了。我的程序是书上的例程,不能全信书啊!先简单记一下。错误原因 我是受到网上这段提示“无非就是一些细节的原因,比如:声明了指针但是没有初始化,结果再后来的时候进行间接引用 ”,比如,char *p;char test[]="Hello" ;st原创 2013-06-27 10:25:10 · 7137 阅读 · 0 评论 -
C库函数标准编程之fscanf()函数解读及其实验
函数功能 fscanf()函数用于从参数stream的文件流中读取format格式的内容,然后存放到...所指定的变量中去。字符串以空格或换行符结束(实验1中会对它进一步说明)函数格式 字符格式说明 关于输入输出原创 2013-06-26 14:05:51 · 2761 阅读 · 0 评论 -
上下文切换
上下文切换(Context Switch) 或者环境切换多任务系统中,上下文切换是指CPU的控制权由运行任务转移到另外一个就绪任务时所发生的事件。在操作系统中,CPU切换到另一个进程需要保存当前进程的状态并恢复另一个进程的状态:当前运行任务转为就绪(或者挂起、删除)状态,另一个被选定的就绪任务成为当前任务。上下文切换包括保存当前任务的运行环境,恢复将要运行任务的运行环境。进转载 2013-06-08 10:18:53 · 3301 阅读 · 0 评论 -
task_struct 解析(五) 进程关系
前面的内容讲了进程PID的管理,接下来要讲解进程间关系的管理进程关系主要有以下两种:1、进程A生成了进程B,那么进程A和B是父子关系2、进程A生成了进程B1,B2,B3...,那么进程B2,B2,B3是兄弟关系在task_truct里有专门的字段来保存着两个关系 struct list_head children; /转载 2013-06-07 15:52:41 · 1110 阅读 · 0 评论 -
task_struct 解析(四) 相关函数
上一篇文章里提到task_struct里有一个PID散列表struct pid_link pids[PIDTYPE_MAX];这里简单说一下pid_linkstruct pid_link{ struct hlist_node node; struct pid *pid;};其转载 2013-06-07 15:51:02 · 1471 阅读 · 0 评论 -
task_struct解析(三) 进程id
task_struct 中有这么几个和进程ID有关的字段pid_t pid;pid_t tgid;....struct pid_link pids[PIDTYPE_MAX];pid和tgid是表示该进程的全局进程ID的,前者是当前进程的ID号,后者是当前进程所在线程组的线程组ID。而后者则是指向PID哈希表的链接,里面存储了命名空转载 2013-06-07 15:48:21 · 3724 阅读 · 0 评论 -
task_struct解析(二) 命名空间
task_struct 中有这么一个字段/* namespaces */ struct nsproxy *nsproxy;用来表示命名空间的。=========================================这份文档解释比较详细http://blogimg.chinaunix.net/blog/upfile2/110316193744.pdf转载 2013-06-07 15:47:08 · 1421 阅读 · 0 评论 -
task_struct解析(一) 进程状态
task_struct 是内核用来表示进程的,包含进程的所有信息,该结构体定义在incluce\linux\Sched.h里 首先介绍一下状态信息volatile long state这个字段存储的是进程当前的状态 =====================================volatile关键字是一种类型修饰符转载 2013-06-07 15:44:29 · 3526 阅读 · 0 评论 -
HTTP协议详解
本文转自:http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实转载 2013-06-17 06:47:06 · 1438 阅读 · 0 评论 -
Linux进程间通信(九)---综合实验之有名管道通信实验
实验目的 通过编写有名管道多路通信实验,进一步掌握管道的创建、读写等操作,同时复习使用select()函数实现管道的通信。实验内容 这里采用管道函数创建有名管道(不是在控制台下输入命令mknod),而且使用select()函数替代poll()函数实现多路复用。如果对管道通信的知识忘了的话,请看这篇博客:原创 2013-06-28 16:06:03 · 6879 阅读 · 1 评论 -
Linux CGI编程
Linux CGI编程http://linux.chinaitlab.com/kernel/526433.html http://www.trainlinux.com/p/2002-01-11/4279.htmlhttp://blog.csdn.net/csumck/archive/2005/11/23/535531.aspx为什么要进行CGI编程?转载 2013-07-18 16:26:55 · 2052 阅读 · 1 评论 -
Linux进程间通信(十)---综合实验之共享内存实验
/********************************************************************** 2019年6月26日声明:本博客资源下载积分最开始为免费的,我也不知道为什么有的很高了。*如果有问题加我微信:wensong2048,(加我备注来源以及需求,否则不通过,谢谢)**********************************...原创 2013-07-18 20:45:29 · 7379 阅读 · 2 评论 -
Linux多任务编程(五)---wait()、waitpid()函数及其基础实验
wait()和waitpid()函数说明 wait()函数用于使父进程(也就是调用wait()的进程)阻塞,直到一个子进程结束或者该进程接收到了一个指定的信号为止。如果该父进程没有子进程或者它的子进程已经结束,则wait()函数就会立即返回。 waitpid()的作用和wait()一样,但它并不一定要等待第一个终止的子进程(它可以指定需要等待终止的子进程),它还有若干选项,如可原创 2013-06-09 21:25:27 · 21616 阅读 · 0 评论 -
Linux多任务编程(六)---编写多进程程序及其代码
实验目的 通过编写多进程程序,熟练掌握fork()、exec()、wait()和waitpid()等函数的使用,进一步理解在Linux中多进程编程的步骤。实验内容 该实验有3个进程,其中一个为父进程,其余两个是该父进程创建的子进程,其中一个子进程运行“ls -l”指令,另一个子进程在暂停5s后异常退出。父进程先用阻塞方式等待第一个进程的结束,然后用非阻塞方式等待另一个子进程的退原创 2013-06-10 09:19:03 · 15673 阅读 · 10 评论 -
UNION REGS
REGS 是声明(描述) Intel 80x86 CPU 16位通用寄存器的一个内部结构(还包括标志位寄存器,标志位寄存器一般用作设置或获得错误)。一般的用途是:向中断接口提供一个参数寄存器组。该结构会在int86()函数、int86x() 函数、intdos() 函数及intdosx()函数中被使用到,这四个函数已在头文件 dos.h 中被声明,详细使用方法请网友自行参阅相关文档或书转载 2013-10-26 21:45:19 · 4946 阅读 · 1 评论 -
STDIN_FILENO的作用及与stdin 的区别
1.STDIN_FILENO的作用STDIN_FILENO属于系统API接口库,其声明为 int 型,是一个打开文件句柄,对应的函数主要包括 open/read/write/close 等系统级调用。操作系统一级提供的文件API都是以文件描述符来表示文件。STDIN_FILENO就是标准输入设备(一般是键盘)的文件描述符。2.区别1)数据类型不一致:转载 2013-08-23 21:53:55 · 1592 阅读 · 0 评论 -
Linux下密码输入问题
刚才无意间看到了关于Linux下输入密码的问题,一寻思也是,以后可能得用到,了解一下。这里的方法是使用库curses.h中的函数,更多的了解请看:http://fanqiang.chinaunix.net/a4/b2/20020626/060200258.html安装 Ncurses 库: RHEL / Fedora / CentOS Linux下的方法:原创 2013-07-21 09:30:13 · 2137 阅读 · 0 评论 -
Linux多线程编程(二)---线程之间的同步与互斥
由于线程共享进程的资源和地址空间,因此在对这些资源进行操作时,必须考虑到线程间资源访问的同步与互斥问题。这里主要介绍Posix中两种线程同步机制,分别为互斥锁和信号量。这两个同步机制可以通过互相调用对方来实现,但互斥锁更适用于同时可用的资源是唯一的情况;信号量更适用于同时可用的资源为多个的情况。原创 2013-07-20 16:15:16 · 12654 阅读 · 7 评论 -
Linux中对文件删除函数unlink的操作
原文转自:http://blog.chinaunix.net/uid-26983585-id-3245451.html看了unlink()函数是对文件的删除,于是写了一个函数进行测试之,结果发现在调用了unlink以后仍然可以对文件进行读写操作,又看了一下书才明白是我没有明白unlink函数的真正含义:删除目录相并减少一个连接数,如果链接数为0并且没有任何进程打开该文件,该文件内容才能被真正删转载 2013-07-21 09:31:52 · 5217 阅读 · 0 评论 -
Linux多线程编程(三)---线程之间的同步与互斥进阶实验
实验目的 通过编写经典的“生产者-消费者”问题的实验,进一步熟悉Linux中的多线程编程,并且掌握用信号量处理线程间的同步和互斥问题。实验内容 “生产者--消费者”问题描述如下: 有一个有限缓冲区(这里用有名管道实现FI原创 2013-07-21 09:03:50 · 9884 阅读 · 7 评论 -
Linux多线程编程(一)---多线程基本编程
线程是指运行中的程序的调度单位。一个线程指的是进程中一个单一顺序的控制流,也被称为轻量级线程。它是系统独立调度和分配的基本单位。同一进程中的多个线程将共享该系统中的全部系统资源,比如文件描述符和信号处理等。一个进程可以有很多线程,每个线程并行执行不同的任务。原创 2013-07-20 10:58:59 · 23814 阅读 · 8 评论 -
嵌入式Web服务器
随着Internet技术的兴起,在嵌入式设备的管理与交互中,基于Web方式的应用成为目前的主流,这种程序结构也就是大家非常熟悉的B/S结构,即在嵌入式设备上运行一个支持脚本或CGI功能的Web服务器,能够生成动态页面,在用户端只需要通过Web浏览器就可以对嵌入式设备进行管理和监控,非常方便实用。本节主要介绍这种应用的开发和移植工作。用户首先需要在嵌入式设备上成功移植支持脚本或CGI功能的Web转载 2013-07-21 17:28:36 · 3407 阅读 · 0 评论 -
warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]错误
今天在编写多线程程序的时候,编译过程中出现了如下错误:thread.c: In function ‘main’:thread.c:38:57: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]后来google了,受这个问题解决的启发http://stackoverflow.原创 2013-07-19 08:51:57 · 30216 阅读 · 3 评论 -
如何用ftok来产生相关的key_t值
在System V中,我们经常用用key_t的值来创建或者打开信号量,共享内存和消息队列。这个在IPC的环境中十分的重要,比如说,服务器创建了一个消息队列,等待 客户机发送请求。那么如何创建或者打开已有的消息队列呢?一般而言,我们对于服务器使用的路径和项目id(proj_id)是已知的,所以客户机可以获取 相同的key来打开 消息队列并进行操作。下面就是ftok的使用原型:# include转载 2013-06-13 14:48:47 · 2774 阅读 · 0 评论 -
Linux进程间通信(五)---信号通信之signal()、信号集函数组及其基础实验
上一节介绍进程间通信方式之一信号通信中的信号产生和捕捉函数,这一节介绍信号处理函数signal()函数和信号集函数组,接上一节http://blog.csdn.net/mybelief321/article/details/9078193强烈建议做最后一个实验!信号处理方法 信号处理的方法主要有以下两种: ① 使用 signal() 函数; ② 使用信号集函数组原创 2013-06-13 10:16:26 · 7839 阅读 · 1 评论 -
UltraEdit打开Linux下编写的文件中文乱码---已解决
我的电脑是双系统,刚才我在window下打开在ubuntu中的c文件,发现中文注释出现乱码,如下图 查了查说是因为编码不同,不过也好解决,解决如下: 选择 “高级/配置”, 然后找到 “文件处理” 在文件处理中选择 Unicode/UTF-8检测,勾选自动检测UTF-8文件,然后点击应用,确定,再重新打开文件就可以了。 如下图,正常显示中文原创 2013-06-08 15:49:26 · 4986 阅读 · 0 评论 -
Linux多任务编程(一)---任务、进程、线程
Linux下多任务介绍 首先,先简单的介绍一下什么叫多任务系统?任务、进程、线程分别是什么?它们之间的区别是什么?,从而可以宏观的了解一下这三者,然后再针对每一个仔细的讲解。 什么叫多任务系统?多任务系统指可以同一时间内运行多个应用程序,每个应用程序被称作一个任务。 任务定义:任务是一个逻辑概念,指由一个软件完成的任务,或者是一系列共同达到某一目的的操作。 进程定义:...原创 2013-06-08 11:04:36 · 9342 阅读 · 3 评论 -
Linux多任务编程(三)---exec函数族及其基础实验
exec函数族函数族说明 fork() 函数用于创建一个新的子进程,该子进程几乎复制了父进程的全部内容,但是,这个新创建的子进程如何执行呢?exec 函数族就提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新的进程替换了。另外,这里的可执行文件既原创 2013-06-09 13:55:47 · 15134 阅读 · 4 评论 -
linux下cat命令详解
转自:http://www.cnblogs.com/perfy/archive/2012/07/23/2605550.html简略版:cat主要有三大功能:1.一次显示整个文件。$ cat filename2.从键盘创建一个文件。$ cat > filename 只能创建新文件,不能编辑已有文件.3.将几个文件合并为一个文件: $cat file1 file2 >转载 2013-05-31 08:36:51 · 2459 阅读 · 0 评论 -
pid_t的类型定义
pid_t的类型定义 创建进程时经常会用到进程号的类型定义:pid_t。我们都知道这个类型定义实际上就是int型。但是在linux下的c中的头文件中这个定义到底是怎么定义的呢?今天就把以前找这个定义的过程贴出来:1.首先在/usr/include/sys/types.h中有如下定义#include ...转载 2013-05-30 14:09:29 · 53628 阅读 · 5 评论 -
mknod指令详解
mknod命令 mknod [options] name {bc} major minor mknod [options] name p GNU 选项(缩写): [-m mode] [--help] [--version] [--] 描述 mknod 用指定名称产生一个FIFO(命名管道),字符专用或块专用文件。转载 2013-05-31 08:31:37 · 2554 阅读 · 0 评论 -
Linux系统文件I/O编程(一)---open()等基本函数
Linux文件I/O系统概述 虚拟文件系统(VFS) Linux系统成功的关键因素之一就是具有与其他操作系统和谐共存的能力。Linux系统的文件系统由两层结构构建:第一层是虚拟文件系统(VFS),第二层是各种不同的具体的文件系统。 VFS就是把各种具体的文件系统的公共部分抽取出来,形成一个抽象层,是系统内核的一部分,它位于用户程序和具体的文件系统之间。它对用户提供了标原创 2013-05-30 08:55:22 · 30912 阅读 · 5 评论 -
Linux系统文件I/O编程(二)---文件锁函数
文件锁 上一节:http://blog.csdn.net/mybelief321/article/details/8989755讲述的5个基本函数函数open()、read()、write()、lseek()和close()实现的文件的打开、读/写等操作,本节将讨论在文件已经共享的情况下如何操作,也就是当多个用户共同使用、操作一个文件的情况。这时,Linux通常采用的方法是给文件上锁,来原创 2013-05-30 13:52:57 · 6922 阅读 · 3 评论 -
Unix/Linux编程之size_t、ssize_t
对于赶时间的朋友,只看第一段就好了。 首先,我非常肯定以及确定的告诉你ssize_t是有符号整型,在32位机器上等同与int,在64位机器上等同与long int,有没有注意到,它和long数据类型有啥区别?其实就是一样的。size_t 就是无符号型的ssize_t,也就是unsigned long/ unsigned int (在32位下),不同的编译器或系统可能会有区别,主要是因为在3转载 2013-05-30 07:13:04 · 13984 阅读 · 0 评论 -
Linux系统调用及用户编程接口(API)学习
Linux系统调用 系统调用指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务。 为什么用户程序不能直接访问系统内核提供的服务呢?这是由于在Linux中,为了更好地保护内核空间,将程序的运行空间分为用户空间和内核空间(也就是常称的用户态和内核态),它们分别运行在不同的级别上,逻辑上是相互分离的。因此,用户进程通常情况下不原创 2013-05-29 15:42:54 · 11394 阅读 · 1 评论 -
Ubuntu linux中怎么查看自己的串口连接情况
我们在windows中查找自己的开发板与电脑的连接的COM口时,可以通过查找设备管理器来看,但是换到咱们的linux系统中就不能这样做了,下面说一下在linux中是怎么查看COM口信息的。 首先,将我的mini2440开发板通过USB转232串口线与PC机连接,这时候咱们的linux系统自动安转了驱动程序,可以使用命令:dmesg 来查看安装驱动的信息,如下图 从上原创 2013-05-29 09:29:32 · 72797 阅读 · 2 评论 -
Linux系统文件I/O编程(三)---I/O多路复用
多路复用函数说明 我们都知道fcntl()函数解决了文件共享的问题,如果不知道请看:http://blog.csdn.net/mybelief321/article/details/8993138。接下来该处理I/O复用的情况了。那么,什么是I/O复用呢?这个咱得先弄清楚,所谓的I/O复用无非就是多个进程共同使用一个I/O输入输出流。 在经典的《Unix网络编程第1卷》Cha原创 2013-05-31 11:15:30 · 4655 阅读 · 1 评论