linux c/c++
lengyuyan007
这个作者很懒,什么都没留下…
展开
-
linux下的c/c++开发开山篇
在很多人的眼里,C语言和linux常常是分不开的。这其中的原因很多,其中最重要的一部分我认为是linux本身就是C语言的杰出作品。当然,linux操作系统本身对C语言的支持也是相当到位的。作为一个真正的程序员来说,如果没有在linux下面用C语言编写过完整的程序,那么只能说他对C语言本身的理解还相关肤浅,对系统本身的认识也不够到位。作为程序员来说,linux系统为我们提供了很多理想的环境,这其中包转载 2013-08-30 14:05:15 · 522 阅读 · 0 评论 -
linux下的C语言开发(多线程编程)
多线程和多进程还是有很多区别的。其中之一就是,多进程是linux内核本身所支持的,而多线程则需要相应的动态库进行支持。对于进程而言,数据之间都是相互隔离的,而多线程则不同,不同的线程除了堆栈空间之外所有的数据都是共享的。说了这么多,我们还是自己编写一个多线程程序看看结果究竟是怎么样的。[cpp] view plaincopy#include转载 2013-08-31 21:45:51 · 868 阅读 · 0 评论 -
linux下的C语言开发(信号处理)
信号处理是linux程序的一个特色。用信号处理来模拟操作系统的中断功能,对于我们这些系统程序员来说是最好的一个选择了。要想使用信号处理功能,你要做的就是填写一个信号处理函数即可。一旦进程有待处理的信号处理,那么进程就会立即进行处理。[cpp] view plaincopy#include #include #include转载 2013-08-31 15:35:21 · 598 阅读 · 0 评论 -
linux下的C语言开发(管道通信)
Linux系统本身为进程间通信提供了很多的方式,比如说管道、共享内存、socket通信等。管道的使用十分简单,在创建了匿名管道之后,我们只需要从一个管道发送数据,再从另外一个管道接受数据即可。[cpp] view plaincopy#include #include #include #include转载 2013-08-31 16:52:13 · 1278 阅读 · 0 评论 -
Linux 信号signal处理机制
信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。 一、信号的基本概念 本节先介绍信号的一些基本概念,然后给出一转载 2013-08-31 16:03:15 · 479 阅读 · 0 评论 -
linux下的C语言开发(进程等待)
所谓进程等待,其实很简单。前面我们说过可以用fork创建子进程,那么这里我们就可以使用wait函数让父进程等待子进程运行结束后才开始运行。注意,为了证明父进程确实是等待子进程运行结束后才继续运行的,我们使用了sleep函数。但是,在linux下面,sleep函数的参数是秒,而windows下面sleep的函数参数是毫秒。下面对下面的程序进行解释:1,fork():正如上一节讨论的,原创 2013-08-30 22:36:58 · 974 阅读 · 0 评论 -
linux下的C语言开发(自动编译工具)
在Linux下面,编写makefile是一件辛苦的事情。因此,为了减轻程序员编写makefile的负担,人们发明了autoconf和automake这两个工具,可以很好地帮我们解决这个问题。 我们可以通过一个简单的示例来说明如何使用配置工具。(1)首先,编写源文件hello.c。[cpp] view plaincopy#转载 2013-08-30 21:14:40 · 706 阅读 · 0 评论 -
linux下的C语言开发(定时器)
定时器是我们需要经常处理的一种资源。那linux下面的定时器又是怎么一回事呢?其实,在linux里面有一种进程中信息传递的方法,那就是信号。这里的定时器就相当于系统每隔一段时间给进程发一个定时信号,我们所要做的就是定义一个信号处理函数。在这之前,先看linux中定义好的一个结构体:struct itimerval;struct itimerval {//结构体中又包含结构体转载 2013-08-30 16:29:10 · 2273 阅读 · 0 评论 -
linux下的C语言开发(动态库)
动态链接库不是linux独有的特性,在windows下面也存在这样的特性。一般来说,windows下面的动态连接库是以*.dll作为结尾的,而linux下面的动态连接库是以*.so结尾的。和静态链接库相比,动态连接库可以共享内存资源,这样可以减少内存消耗。另外,动态连接是需要经过操作系统加载器的帮助才能被普通执行文件发现的,所以动态连接库可以减少链接的次数。有了这个特点,我们就不难发现为什么很多软转载 2013-08-30 15:27:46 · 453 阅读 · 0 评论 -
linux下的C语言开发(静态库)
在我们编写软件的过程当中,少不了需要使用别人的库函数。因为大家知道,软件是一个协作的工程。作为个人来讲,你不可能一个人完成所有的工作。另外,网络上一些优秀的开源库已经被业内广泛接受,我们也没有必要把时间浪费在这些重复的工作上面。 既然说到了库函数,那么一般来说库函数分为两种方式:静态库和动态库。两者的区别其实很小,静态库是必须要链接到执行文件中去的,而动态库是不需要链接到最后的执行文转载 2013-08-30 15:06:39 · 571 阅读 · 0 评论 -
linux下的C语言开发(makefile编写)
对于程序设计员来说,makefile是我们绕不过去的一个坎。可能对于习惯Visual C++的用户来说,是否会编写makefile无所谓。毕竟工具本身已经帮我们做好了全部的编译流程。但是在Linux上面,一切变得不一样了,没有人会为你做这一切。编代码要靠你,测试要靠你,最后自动化编译设计也要靠你自己。想想看,如果你下载了一个开源软件,却因为自动化编译失败,那将会在很大程度上打击你学习代码的自信心了转载 2013-08-30 14:12:15 · 662 阅读 · 0 评论 -
linux下的C语言开发(进程创建)
在Linux下面,创建进程是一件十分有意思的事情。我们都知道,进程是操作系统下面享有资源的基本单位。那么,在Linux下面应该怎么创建进程呢?其实非常简单,一个fork函数就可以搞定了。但是,我们需要清楚的是子进程与父进程之间除了代码是共享的之外,堆栈数据和全局数据均是独立的。对下列代码中的一些进行解释:、1,pid=fork(); 创建子进程;(返回值:EAGAIN:转载 2013-08-30 21:50:25 · 774 阅读 · 0 评论 -
linux下的C语言开发(AT&T 汇编语言)
同样是x86的cpu,但是却可以用不同形式的汇编语言来表示。在window上面我们使用的更多是intel格式的汇编语言,而在Linux系统上面使用的更多的常常是AT&T格式的汇编语言。那什么是AT&T格式的汇编代码呢?我们可以写一个试试看。[cpp] view plaincopy.data message: .string "h转载 2013-08-30 14:40:47 · 549 阅读 · 0 评论 -
linux下的C语言开发(gdb调试)
编写代码过程中少不了调试。在windows下面,我们有visual studio工具。在linux下面呢,实际上除了gdb工具之外,你没有别的选择。那么,怎么用gdb进行调试呢?我们可以一步一步来试试看。[cpp] view plaincopy#include int iterate(int value) {转载 2013-08-30 14:14:18 · 462 阅读 · 0 评论 -
同步IO、异步IO、阻塞IO、非阻塞IO之间的联系与区别
https://www.cnblogs.com/euphie/p/6376508.html原创 2019-01-25 11:06:47 · 165 阅读 · 0 评论