Linux APP
文章平均质量分 69
yylklshmyt20090217
Focus on Linux World
展开
-
errno常数
#include errno 值是常数分配给errno 在各种错误状态的情况下。ERRNO.H 包含 errno 值的定义。 但是,并非在 ERRNO.H 提供的所有定义用于 32 位 windows 操作系统。 在某些 ERRNO.H 的值存在保持与操作系统 UNIX 系列的兼容性。 在 32 位 windows 操作系统的 errno 值是的子集转载 2013-01-15 15:26:48 · 792 阅读 · 0 评论 -
linux exec的用法
说是exec系统调用,实际上在Linux中,并不存在一个exec()的函数形式,exec指的是一组函数,一共有6个,分别是:#include extern char **environ;int execl(const char *path, const char *arg, ...);int execlp(const char *file, const char *arg, .转载 2013-01-06 10:25:57 · 2757 阅读 · 0 评论 -
韩语相关
我感觉这是一个很好的学韩语的网站。上面还有韩语歌曲可以下载也有歌词。有学习韩语的视频跟韩国的新闻。可以去看看呦~~http://www.koreaxin.com/ 一、7个学习韩文特棒的网站: 1.http://www.koreaxin.com/(韩国新网) 2.http://rki.kbs.co.kr/learn_korean/lessons/c_index.htm#(韩国转载 2009-11-14 21:29:00 · 976 阅读 · 0 评论 -
sscanf
sscanf开始一直不理解sscanf的用法,在教室里看书,没有网可上,就一直来猜这个函数作用,不过也猜得八九不离十了。回头来网上看看,没想到sscanf的作用这么强大。而且它的兄弟sprintf 我一直在用,呵呵,咋就没想到他还有个弟弟呢?sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。比如说sscanf("12345"原创 2009-11-13 15:22:00 · 734 阅读 · 0 评论 -
Big endian and Little endian
Big endian and Little endian谈到字节排序的问题,必然牵涉到两大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC系列采用big endian方式存储数据,而x86系列则采用little endian方式存储数据。ARM同时支持 big和little,实际应用中通常使用little endian。那么究竟什原创 2009-11-14 20:35:00 · 753 阅读 · 0 评论 -
字节对齐
#include struct a { char no[10]; int p; long int pp; unsigned int ppp; char x; float y; double h; }xy; void main() { printf("struct a: %d /n",sizeof(struct a)); // 不是等转载 2009-11-14 21:00:00 · 496 阅读 · 0 评论 -
Linux串口编程
Linux串口编程简介: Linux 操作系统从一开始就对串行口提供了很好的支持,本文就 Linux 下的串行口通讯编程进行简单的介绍。 串口简介 串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是 RS-232-C 接口(又称 EIA RS-232-C)它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同原创 2009-11-13 15:11:00 · 1478 阅读 · 0 评论 -
Volatile
对volatile的理解 很多人对Volatile都不太了解,其实Volatile是由于编译器优化所造成的一个Bug而引入的关键字。 int a = 10; int b = a; int c = a; 理论上来讲每次使用a的时候都应该从a的地址来读取变量值,但是这存在一个效率问题,就是每次使用a都要去内存中取变量值原创 2009-08-24 17:36:00 · 608 阅读 · 0 评论 -
简要介绍如何配置与使用 Linux 网络系统的多播IP
多播广播是用于建立分步式系统:例如网络游戏、ICQ聊天构建、远程视频会议系统的重要工具。使用多播广播的程序和UDP向单个介绍方发送信息的程序相似。区别在于多播广播程序使用特殊的多播IP地址。 例如本地计算机的的IP地址是:127.0.0.1而它的多播地址是: 224.0.0.1。这是由RCF 1390定义的。为发送IP多播数据,发送者需要确定一个合适的多播地址,这个地址代表一个组。IPv4多播地转载 2009-08-24 14:37:00 · 1400 阅读 · 0 评论 -
数据库函数库
数据库函数库数据库函数库与UNIX系统的接口一、历史1 dbm(3)是在UNIX系统中很流行的数据库函数库,使用了动态散列结构。2 db(3) 是4.3+BSD提供的,它支持3种不同的访问模式:面向记录、散列和B-树。二、函数库#include "db.h"1. 打开数据库DB *db_open(const chapr a t h* n a m e, int o f原创 2009-06-17 11:31:00 · 1569 阅读 · 1 评论 -
Linux上的终端设备
在Linux系统中,终端设备非常重要,没有终端设备,系统将无法向用户反馈信息,Linux中包含控制台、串口和伪终端3类终端设备。 在Linux系统中,终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写,Teletype是最早出现的一种终端设备,很像电传打字机,是由Teletype公司生产的。Linux中包含如下几类终端设备: 1转载 2009-06-15 15:05:00 · 1145 阅读 · 0 评论 -
ifconfig 详解
ifconfig 是一个用来查看、配置、启用或禁用网络接口的工具,这个工具极为常用的。可以用这个工具来临时性的配置网卡的IP地址、掩码、广播地址、网关等。也可以把它写入一个文件中(比如/etc/rc.d/rc.local),这样系统引导后,会读取这个文件,为网卡设置IP地址1.ifconfig 查看网络接口状态ifconfig 如果不接任何参数,就会输出当前网络接口的情况;[root@原创 2009-08-19 11:55:00 · 1155 阅读 · 0 评论 -
STREAMS
STREAMS(流)是系统V提供的构造内核设备驱动程序和网络协议包的一种通用方法,对STREAMS进行讨论的目的是为了理解系统V的终端接口,I/O多路转接中poll(轮询)函数的使用,以及基于STREAMS的管道和命名管道的实现。 流在用户进程和设备驱动程序之间提供了一条全双工通路。流无需和实际硬件设备直接会话,流也可以用来构造伪设备驱动程序。 STREAMS模块原创 2009-06-04 16:22:00 · 3850 阅读 · 2 评论 -
存储映射I/O
存储映射I/O存储映射I/O(Memory-mapped I/O)使一个磁盘文件与存储空间中的一个缓冲区相映射。于是当从缓冲区取数据,就相当于读文件中的相应字节。与次类似,将数据存入缓冲区,则相应的字节就自动地写入文件。这样就可以在不使用read和write的情况下执行I/O。 一、存储映射I/O函数#include void *mmap(void *addr, size原创 2009-06-05 11:20:00 · 783 阅读 · 0 评论 -
四个读写函数
四个读写函数一、readv和writev函数功能:用于在一次函数调用中读写多个非连续缓冲区。有时也将这两个函数成为散布读(scatter read)和聚集写(gather write)。#include ssize_t readv(int filedes, const struct iovec *iov , int iovcnt); ssize_t writev原创 2009-06-05 10:56:00 · 889 阅读 · 0 评论 -
linux中exit()和 _exit()
exit和_exit函数都是用来终止进程的。当程序执行到exit或_exit时,系统无条件的停止剩下所有操作,清除包括PCB在内的各种数据结构,并终止本进程的运行。但是,这两个函数是有区别的。_exit()函数的作用是:直接使进程停止运行,清除其使用的内存空间,并清除其在内核中的各种数据结构;exit()函数则在这一基础上做了一些包装。在执行退出之前加了若干道工序。exit()函数与_exit转载 2013-01-06 10:43:58 · 703 阅读 · 0 评论 -
批处理FTP上传文件到服务器
实例本机为Windows,服务器为Linux且其用户名为root,密码为1111。创建一个test.bat文件和一个128.txt文件。需要传的文件test(二进制bin文件)放在相同目录下,双击test.bat则可以自动FTP上传文件到服务器。 test.bat内容为:ftp -s:128.txt 128.txt内容为:open 128.0.0.28rootr原创 2009-11-29 21:25:00 · 3695 阅读 · 0 评论 -
linux文件的访问权限和文件模式
linux文件的访问权限和文件模式 SUID含义:文件的该位被设 置为1,在该文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权,如果所有者是root的话,那么执行人就有超级用户 的特权了,这是该位将变成一个安全漏洞,因此不要轻易设置该位。SGID含义:运行者将具有文件所有组的权限。STICKY粘合位: 要求操作系统既转载 2013-01-15 15:11:56 · 967 阅读 · 0 评论 -
启动vsftpd的问题---500 OOPS: vsftpd: not configured for standalone, must be started from inetd
vsftpd: not configured for standalone, must be started from inetd因为xinetd已经启动了vsftpd,而你的vsftpd设置成了stardalone模式如果要用inetd启动,那用如下方面启动:首先copy你的安装文件里的vsftpd.xinetd到/etc/xinetd.d/下cp vsftpd.xinetd /转载 2013-01-14 13:24:48 · 17440 阅读 · 1 评论 -
tcflush与unbuffered I/O,buffered I/O
tcflush就是清除输入/输出数据的。但是我们会看到,采用不同的I/O函数确有不同的结果。代码一:buffered I/O#include #include #include #include int main(原创 2009-08-18 18:42:00 · 1603 阅读 · 0 评论 -
linux获取系统时间
1.时间表示在程序当中,我们经常要输出系统当前的时间,比如我们使用date命令的输出结果。这个时候我们可以使用下面两个函数 time_t time(time_t *tloc); //时间精度为秒char *ctime(const time_t *clock); //将秒数转化为字符串 time函数返回从1970年1月1日0转载 2010-01-04 15:51:00 · 10262 阅读 · 1 评论 -
Posix多线程编程(4)—互斥量(锁)
一、什么是互斥锁 另一种在多线程程序中同步访问手段是使用互斥量。程序员给某个对象加上一把“锁”,每次只允许一个线程去访问它。如果想对代码关键部分的访问进行控制,你必须在进入这段代码之前锁定一把互斥量,在完成操作之后再打开它。 互斥量函数有 pthread_mutex_init 初始化一个互斥量 pthread_mutex_lock转载 2009-06-02 15:53:00 · 2246 阅读 · 0 评论 -
记录锁
一、记录锁record locking若两个人同时编辑一个文件,会出现什么样的后果呢?对于很多UNIX系统,该文件的最后状态取决于写该文件的最后一个进程。但是,对于某些应用程序(例如数据库),进程有时需要确保它正在单独写一个文件。记录锁就是提供这种功能的机制。记录锁的功能是:当一个进程正在读或者修改文件的某个部分时,它可以阻止其他进程修改同一文件区。 二、fcntl记录锁#in原创 2009-06-03 16:12:00 · 1905 阅读 · 0 评论 -
协同进程coprocess
协同进程当一个程序产生某个过滤程序的输入,同时又读取该过滤程序的输出时,则该过滤程序就成为协同进程(coprocess)。协同进程通常在shell的后台运行,其标准输入和标准输出通过管道连接到另一个程序。虽然初始化一个协同进程并将其输入和输出连接到另一个进程,用到的shell语法是很奇特的,但是协同进程的工作方式在C程序中也是非常有用的。进程先创建两个管道:一个是协同进程的标准输入,另原创 2009-06-08 16:09:00 · 3277 阅读 · 0 评论 -
linux下printf函数输出不及时解决办法
在linux系统下,printf函数是行缓冲式的输出,当printf遇到\n时,或者缓冲区满时,才会将缓冲区里的内容刷新到标准输出(stdout).因此, printf("p"); 等语句的显示不能立刻显示在屏幕上,但是printf("p\n"); 可以.为了解决这个问题可以通过:fflush(stdout)解决,即变成:printf("p");fflush(stdout)转载 2013-01-06 10:49:39 · 2323 阅读 · 0 评论 -
被问到的一个问题:Linux是实时操作系统吗?
教你如何把Linux变为实时操作系统 过去很多嵌入式系统不是一个操作系统,或者是提供商的专有核心,或者是DOS操作系统的扩展。显然这些方法并不能适应今天嵌入式系统开发的要求!现有的一些商业实时操作系统,尽管提供了很小的核心和多任务开发环境,但性能并不理想,也不符合现在实时嵌入式市场的需求。 因此,人们把目光投向了通用操作系统(例如Windows、Solaris、Linux)原创 2009-07-21 17:22:00 · 4192 阅读 · 1 评论 -
Linux-read函数
read函数(读取文件)read函数可以读取文件。读取文件指从某一个已打开地文件中,读取一定数量地字符,然后将这些读取的字符放入某一个预存的缓冲区内,供以后使用。使用格式如下:number = read( ...read函数(读取文件)read函数可以读取文件。读取文件指从某一个已打开地文件中,读取一定数量地字符,然后将这些读取的字符放入某一个预存的缓冲区内,供以后使用。使原创 2009-11-13 14:54:00 · 45171 阅读 · 4 评论 -
Posix多线程编程(6)—共享内存
一、什么是共享内存区共享内存区是最快的可用IPC形式。它允许多个不相关的进程去访问同一部分逻辑内存。如果需要在两个运行中的进程之间传输数据,共享内存将是一种效率极高的解决方案。一旦这样的内存区映射到共享它的进程的地址空间,这些进程间数据的传输就不再涉及内核。这样就可以减少系统调用时间,提高程序效率。共享内存是由IPC为一个进程创建的一个特殊的地址范围,它将出现在进程的地址空间中。其他进程可转载 2009-06-02 16:19:00 · 1780 阅读 · 1 评论 -
UDP丢包
UDP丢包我们是后一个包丢掉了 最近在做一个项目,在这之前,做了个验证程序.发现客户端连续发来1000个1024字节的包,服务器端出现了丢包现象.纠其原因,是服务端在还未完全处理掉数据,客户端已经数据发送完毕且关闭了.有没有成熟的解决方案来解决这个问题.我用过sleep(1),暂时解决这个问题,但是这不是根本解决办法,如果数据量大而多,网络情况不太好的话,还是有可能转载 2009-06-17 11:46:00 · 8028 阅读 · 1 评论 -
Linux静态库和动态库的分析
Linux静态库和动态库的分析1.什么是库在windows平台和linux平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的本质不同,因此二者库的二进制是不兼容的。本文仅限于介绍linux下的库。2.库的种类linux下的库有两种:静态库和共享库(动态库)。二者的不同点在于代码被载入的时刻不同转载 2009-07-14 11:11:00 · 2214 阅读 · 5 评论 -
Coverity Prevent 简介
Coverity PreventPrevent(软件质量系统)是检测和解决C、C++、Java源代码中最严重的缺陷的领先的自动化方法。通过对您的构建环境、源代码和开发过程给出一个完整的分析,Prevent建立了获得高质量软件的标准。静态源代码分析允许我们再软件开发生命周期的早期阶段发现和修复缺陷,节省数以百万计的相关成本。Prevent是业界标准,因为只有Coverity理解和掌握静态转载 2009-08-14 09:46:00 · 3990 阅读 · 1 评论 -
I/O多路转接
一、I/O多路转接(I/O multiplexing)背景:当需要从多个描述符读时,应该怎么办?先构造一张有关描述符的列表,然后调用一个函数,直到这些描述符中的一个准备好进行I/O时,该函数才返回。在返回时,它告诉进程哪些描述符已经准备好可以进行I/O。poll,pselect,select这三个函数使我们能够执行多路转接。 1、select和pselect函数 (1)原创 2009-06-04 17:48:00 · 1431 阅读 · 0 评论 -
非阻塞I/O
非阻塞I/O非阻塞I/O使我们可以调用open,read,write这样的I/O操作,并使这些操作不会永远阻塞。如果这种操作不能完成,则调用立即出错返回,表示该操作如继续执行将阻塞。对于一个给定的描述符,有两种方法对其指定非阻塞I/O:1 如果调用open获得描述符,则可指定O_NONBLOCK标志2 对于一个已经打开的描述符,则可调用fcntl,由该函数打开O_NONBLOCK文原创 2009-06-03 15:21:00 · 1596 阅读 · 0 评论 -
Posix多线程编程(3)—信号灯(量)
有名信号灯和基于内存的信号灯信号灯---限制进程或线程访问共享资源的个数一、Posix有名信号灯 函数sem_open创建一个新的有名信号灯或打开一个已存在的有名信号灯。有名信号灯总是既可用于线程间的同步,又可以用于进程间的同步。 但是基于内存的信号灯,用于线程间同步比较方便,用于进程间通信就会出现一定的问题。1.posix有名信号灯函数 函数1. 名称:: sem_open转载 2009-06-02 15:29:00 · 1650 阅读 · 0 评论 -
堆和栈的区别
堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。转载 2009-05-26 11:55:00 · 621 阅读 · 0 评论 -
环境变量
环境变量我们在第2章讨论了环境变量。这些变量可以用来控制shell脚本和其他程序的形为。我们也可以使用他们来配置用户环境。例如,每一个用户都有一个环境变量,HOME,定义了其用户主目录,作为其会话的起始位置。正如我们所知的,我们由shell提示来测试环境变量:$ echo $HOME/home/neil我们也可以使用shell的set命令来列出所有的环境变量。Unix描述定义了许多标准的环境变量转载 2009-05-26 11:54:00 · 768 阅读 · 0 评论 -
一个关于文件行操作的题目
程序目的: 很简单,读取当前的"read.txt"中的内容,把第一行与最末一行整体交换内容。然后另存到另一文件"write.txt"中。 比如:在read.txt中有: aaa bbbb ccccc dddddd eeeeeee 交换之后就应该: eeeeeee dddddd ccccc bbbb aaa 然后保存到write.txt vert.c#include #inc原创 2009-07-22 17:37:00 · 534 阅读 · 0 评论 -
Linux下的时间表示
在Linux/UNIX系统中时间定义分为两种:一种为系统时间,该时间一般是一个长整型数据,单位为秒。另一种是日历时间。相对于系统时间,日历时间更贴近于人们熟悉的时间表示法,其通过一个tm结构体来更贴切地标明时间的年、月、日、时、分、秒、星期。 一.系统时间是至1970年1月1日到现在所经过的秒数,这个值的数据类型为time_t,是一个长整型数据。time函数获取系统时间。diffti原创 2009-07-23 11:29:00 · 1588 阅读 · 3 评论 -
进程控制
一.进程标识符进程ID:一个进程标识符唯一对应一个ID,多个进程标识符可以对应同一个程序。进程中重要的ID:进程ID、父进程ID、有效用户ID、有效组ID、实际用户ID、实际组ID。 二.进程操作创建一个进程:fork 和vfork的区别退出进程:调用退出函数exit使用exit函数检查进程出错信息:exit(errno);exit与内核的关系:exit函数是一个标原创 2009-07-23 10:23:00 · 461 阅读 · 0 评论 -
C程序的存储布局--堆
堆用于存储用户申请的内存空间,系统通常会在堆中进行动态内存分配。根据不同的处理器体系结构,程序内存布局会有一定的差异。由于操作系统的分页管理机制,所以在程序使用的是逻辑地址。操作系统在将虚拟地址映射为物理地址的时候会采用堆程序员透明的机制,因此不能严格保证在物理内存中,程序也会保持相同的布局。stack.c#include int a=1;int main(v原创 2009-07-20 16:43:00 · 586 阅读 · 0 评论