Linux programme
文章平均质量分 81
xiegenwendada
这个作者很懒,什么都没留下…
展开
-
多线程和多进程的区别(小结)
一.为何需要多进程(或者多线程),为何需要并发?这个问题或许本身都不是个问题。但是对于没有接触过多进程编程的朋友来说,他们确实无法感受到并发的魅力以及必要性。我想,只要你不是整天都写那种int main()到底的代码的人,那么或多或少你会遇到代码响应不够用的情况,也应该有尝过并发编程的甜头。就像一个快餐点的服务员,既要在前台接待客户点餐,又要接电话送外卖,没有分身术肯定会忙得你焦头烂额的。转载 2013-01-07 15:02:35 · 380 阅读 · 0 评论 -
Linux进程间通信——使用消息队列
原博客:http://blog.csdn.net/ljianhui/article/details/10287879下面来说说如何用不用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处。有关命名管道的更多内容可以参阅我的另一篇文章:Linux进程间通信——使用命名管道一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。转载 2015-04-13 16:47:35 · 359 阅读 · 0 评论 -
Linux多线程——使用互斥量同步线程
原博客:http://blog.csdn.net/ljianhui/article/details/10875883前文再续,书接上一回,在上一篇文章:Linux多线程——使用信号量同步线程中,我们留下了一个如何使用互斥量来进行线程同步的问题,本文将会给出互斥量的详细解说,并用一个互斥量解决上一篇文章中,要使用两个信号量才能解决的只有子线程结束了对输入的处理和统计后,主线程才能继续执行的问转载 2015-04-13 16:51:11 · 396 阅读 · 0 评论 -
防止变量重复定义、头文件重复包含、嵌套包含
【转自】 http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html#include文件的一个不利之处在于一个头文件可能会被多次包含,为了说明这种错误,考虑下面的代码:#include "x.h"#include "x.h"显然,这里文件x.h被包含了两次,没有人会故意编写这样的代码。转载 2015-04-13 16:56:08 · 459 阅读 · 0 评论 -
Linux启动新进程的几种方法及比较
原博客:http://blog.csdn.net/ljianhui/article/details/10089345有时候,我们需要在自己的程序(进程)中启动另一个程序(进程)来帮助我们完成一些工作,那么我们需要怎么才能在自己的进程中启动其他的进程呢?在Linux中提供了不少的方法来实现这一点,下面就来介绍一个这些方法及它们之间的区别。一、system函数调用转载 2015-04-13 16:36:18 · 426 阅读 · 0 评论 -
Linux进程间通信——使用信号
源博客:http://blog.csdn.net/ljianhui/article/details/10128731一、什么是信号用过Windows的我们都知道,当我们无法正常结束一个程序时,可以用任务管理器强制结束这个进程,但这其实是怎么实现的呢?同样的功能在Linux上是通过生成信号和捕获信号来实现的,运行中的进程捕获到这个信号然后作出一定的操作并最终被终止。转载 2015-04-13 16:37:31 · 317 阅读 · 0 评论 -
Linux进程间通信——信号集函数
源博客:http://blog.csdn.net/ljianhui/article/details/10130539我们已经知道,我们可以通过信号来终止进程,也可以通过信号来在进程间进行通信,程序也可以通过指定信号的关联处理函数来改变信号的默认处理方式,也可以屏蔽某些信号,使其不能传递给进程。那么我们应该如何设定我们需要处理的信号,我们不需要处理哪些信号等问题呢?信号集函数就是帮助我们解决转载 2015-04-13 16:38:28 · 342 阅读 · 0 评论 -
Linux进程间通信——使用匿名管道
源博客:http://blog.csdn.net/ljianhui/article/details/10168031在前面,介绍了一种进程间的通信方式:使用信号,我们创建通知事件,并通过它引起响应,但传递的信息只是一个信号值。这里将介绍另一种进程间通信的方式——匿名管道,通过它进程间可以交换更多有用的数据。一、什么是管道如果你使用过Linux的命令,那么对于管道转载 2015-04-13 16:40:31 · 381 阅读 · 0 评论 -
Linux进程间通信——使用命名管道
原博客:http://blog.csdn.net/ljianhui/article/details/10202699在前一篇文章——Linux进程间通信——使用匿名管道中,我们看到了如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进程之间交换数据带来了不方便。这里将会介绍进程的另一种通信方式——命名管道,来解转载 2015-04-13 16:42:06 · 425 阅读 · 0 评论 -
Linux进程间通信——使用流套接字
原博客:http://blog.csdn.net/ljianhui/article/details/10477427前面说到的进程间的通信,所通信的进程都是在同一台计算机上的,而使用socket进行通信的进程可以是同一台计算机的进程,也是可以是通过网络连接起来的不同计算机上的进程。通常我们使用socket进行网络编程,这里将会简单地讲述如何使用socket进行简单的网络编程。转载 2015-04-13 16:49:21 · 407 阅读 · 0 评论 -
Linux进程间通信——使用数据报套接字
原博客:http://blog.csdn.net/ljianhui/article/details/10697935前一篇文章,Linux进程间通信——使用流套接字介绍了一些有关socket(套接字)的一些基本内容,并讲解了流套接字的使用,这篇文章将会给大家讲讲,数据报套接字的使用。一、简单回顾——什么是数据报套接字。socket,即套接字是一种通信转载 2015-04-13 16:49:51 · 491 阅读 · 0 评论 -
Linux 之 最常用的20条命令
原博客:http://blog.csdn.net/ljianhui/article/details/11100625玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。当然你也可以在使用时去找一下man,他会帮你解决不少的问题。然而每个人玩Linux的目的都不同,所以他们转载 2015-04-13 16:53:26 · 456 阅读 · 0 评论 -
Linux 之 区分硬连接和软连接
一、Linux下的两种连接文件及创建方式在Linux下面的连接文件有两种——软连接和硬连接,虽然都是连接文件,但两者却有很大的区别。一种是类似于Windows的快捷方式功能的文件(或目录),这种连接称为软连接;另一种则是通过文件系统的inode连接来产生新文件名,而不是产生新文件,这种称为硬连接。创建连接文件的方法非常简单,就是使用ln命令,ln file1 file2,则创建硬连转载 2015-04-13 16:54:27 · 360 阅读 · 0 评论 -
Linux进程间通信——使用共享内存
原博客:http://blog.csdn.net/ljianhui/article/details/10253345下面将讲解进程间通信的另一种方式,使用共享内存。一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进转载 2015-04-13 16:44:40 · 439 阅读 · 0 评论 -
Linux多线程——使用信号量同步线程
原博客:http://blog.csdn.net/ljianhui/article/details/10813469信号量、同步这些名词在进程间通信时就已经说过,在这里它们的意思是相同的,只不过是同步的对象不同而已。但是下面介绍的信号量的接口是用于线程的信号量,注意不要跟用于进程间通信的信号量混淆,关于用于进程间通信的信号量的详细介绍可以参阅我的另一篇博文:Linux进程间通信——使用信号转载 2015-04-13 16:50:36 · 392 阅读 · 0 评论 -
Linux进程间通信——使用信号量
原博客:http://blog.csdn.net/ljianhui/article/details/10243617这篇文章将讲述别一种进程间通信的机制——信号量。注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物。有关信号的更多内容,可以阅读我的另一篇文章:Linux进程间通信——使用信号。下面就进入信号量的讲解。一、什么是信号量为了防止出现转载 2015-04-13 16:43:41 · 368 阅读 · 0 评论 -
Linux数据管理——文件锁定
原作者博客:http://blog.csdn.net/ljianhui/article/details/10075795一、什么是文件锁定对于锁这个字,大家一定不会陌生,因为我们生活中就存在着大量的锁,它们各个方面发挥着它的作用,现在世界中的锁的功能都可归结为一句话,就是阻止某些人做某些事,例如,门锁就是阻止除了屋主之外的人进入这个房子,你进入不到这个房子,也就不能使用房子里面转载 2015-04-13 16:26:47 · 496 阅读 · 0 评论 -
C语言常见宏定义
写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等。下面列举一些成熟软件中常用得宏定义。。。。。。 1,防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H //头文件内容#endif2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。typedef转载 2013-02-27 17:33:09 · 457 阅读 · 0 评论 -
内存对齐(转)
写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧. /******************************分割线如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢?体系结构的对齐和不对齐,是在时间和转载 2013-01-07 15:10:19 · 324 阅读 · 0 评论 -
open与fopen的区别(转)
open和fopen的区别:1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则转载 2013-01-07 15:07:59 · 419 阅读 · 0 评论 -
Linux进程间通信
一、进程间通信概述进程通信有如下一些目的:A、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间B、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。C、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。D、资源共享:多个进程之间共享同样的资源。为了作转载 2013-01-07 16:19:51 · 335 阅读 · 0 评论 -
linux系统调用与文件IO
Linux系统调用: 是指操作系统提供给用户程序的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操 作系统内核提供的特殊服务,最直接的就是API调用,比如fork函数,exit函数等。 内核是一个很神秘很特别的程序,它不允许用户程序直接访问内核提供的服务,为了更好的保护内核空间, 将程序的运行空间分为内核空间和用户空间,他们运行在不同的级转载 2013-01-09 09:33:47 · 446 阅读 · 0 评论 -
linux守护进程
守护进程:生存期长,在系统引导装入时启动,在系统关闭时终止,没有控制终端,只在后台运行 所有守护进程的父进程都是init进程一个或多个进程构成进程组,一个或多个进程组构成会话组守护进程编程规则: 1.创建子进程,父进程退出(使得子进程成为孤儿进程,孤儿进程运行一段时间后,由init进程统一接管) 2.调用setsid创建一个新的会话,并担任该会话组的组长 setsi转载 2013-01-09 09:36:22 · 400 阅读 · 0 评论 -
linux标准IO函数库
标准I/O函数库: C标准库提供了文件的标准 I/O 函数库,相比前述的系统调用,主要差别是实现了跨平台的用户态缓冲的解决方案。标准I/O库使用简单,与系统调用I/O相似,也包括打开、读写、关闭这些操作,主要的函数列举如下。 ◆ 打开与关闭文件:fopen,fclose。 ◆ 读写文件:fread,fwrite。 ◆ 读写文本行:fgets,fputs。 ◆ 格式化读写:f转载 2013-01-09 09:39:37 · 505 阅读 · 0 评论 -
linux进程学习
Linux 中的进程: 程序时一个预定义的指令序列,用来完成一个特定的任务。 C 编译器可以把每个源文件翻译成一个目标文件,链接器将所有的目标文件与一些必要的库链接在一起,产生一个可执行文件。当程序被执行时,操作系统将可执行文件复制到内存中,这就是程序的映像。 进程是一个程序正在执行的实例。每个这样的实例都有自己的地址空间与执行状态。进程必须有一个PID(Process ID,进程标识转载 2013-01-09 09:46:31 · 441 阅读 · 0 评论 -
linux进程通讯-共享内存
共享内存: 共享内存区域是被多个进程共享的一部分物理内存. 不同的进程可以通过共享内存通信,是进程间共享数据的一种最快的方法. 一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容 (比如你把你家的保险箱密码告诉我,那我们就可以通过保险箱共享money,你一放进去money,我就可以 立马收到你的money了!!!转载 2013-01-09 09:23:52 · 515 阅读 · 0 评论 -
linux静态库的生成与使用
库是一种软件组件技术,库里面封装了数据和函数。库的使用可以使程序模块化。Windows系统包括静态链接库(.lib文件)和动态链接库(.dll文件)。Linux通常把库文件存放在/usr/lib或/lib目录下。Linux库文件名由:前缀lib、库名和后缀3部分组成,其中动态链接库以.so最为后缀,静态链接库通常以.a作为后缀。在程序中使用使用静态库和动态库时,他们载入的顺序是转载 2013-01-09 09:37:49 · 318 阅读 · 0 评论 -
errno.h解释【转】
#ifndef _I386_ERRNO_H#define _I386_ERRNO_H#define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such file or directory */#define ESRCH 3 /* No such process */#define EINTR 4 /*转载 2013-01-10 16:04:10 · 665 阅读 · 0 评论 -
Llinux进程间通信-AF_UNIX 套接字编程
AF_UNIX 地址系列(使用 AF_UNIX 或 AF_UNIX_CCSID 地址系列的套接字)可以是面向连接的(类型 SOCK_STREAM),也可以是无连接的(类型 SOCK_DGRAM)。两种类型都很可靠,原因是没有连接两个进程的外部通信函数。UNIX 域数据报套接字的运行方式与 UDP 数据报套接字有所不同。借助 UDP 数据报套接字,客户机程序就不必调用 bind() 函数,原因是转载 2013-01-14 10:22:06 · 2037 阅读 · 0 评论 -
linux判断文件是否存在
对于判断文件是否存在,每个人有不同的方法!我通常采用两种方法 : open 和 access ;这个俩个方法有相似之处,且有不同之处;下面为大家详细说明他们的不同之处:open 是打开,读写等操作文件的一个函数,access就是一个判断文件权限的函数。在linux下,由于文件有不同的权限,当当前用户没有对此文件的读权限的时候,用来判断文件是否存在,显然不合适。而access却可转载 2013-01-14 10:26:58 · 565 阅读 · 0 评论 -
C语言模块化
在C语言的应用领域,如通讯领域和嵌入式系统领域,一个的软件项目通常包含很多复杂的功能,实现这个项目不是一个程序员单枪匹马可以胜任的,往往需要一个团队的有效合作,另外,在一个以C代码为主的完整的项目中,经常也需要加入一些其他语言的代码,例如,C代码和汇编代码的混合使用,C文件和C++的同时使用。这些都增加了一个软件项目的复杂程度,为了提高软件质量,合理组织的各种代码和文件是非常重要的。转载 2013-02-27 17:28:14 · 508 阅读 · 0 评论 -
Linux 之 数据流重定向
原博客:http://blog.csdn.net/ljianhui/article/details/9262737一、什么是数据流重定向在说数据流重定向之前,先来说说数据流的概念吧。数据流分为三种:标准输入(stdin),标准输出(stdout)和标准错误输出(stderr)。简单来说,标准输出指的是命令执行所回传的正确信息,而标准错误输出指的是命令执行失败后,所回传的转载 2015-04-13 16:56:06 · 594 阅读 · 0 评论