LINUX系统编程
文章平均质量分 64
xyf haha~
Study hard! Live seriously!
展开
-
LINUX学习笔记—Makefile学习(二)
Makefile 多文件编译 在我们实际开发过程中,是不可能编译单一文件的,有很多源文件需要一起编译。例如现在在一个项目文件夹中有四个 .c 文件 test1.c test2.c test3.c test4.c 四个 .h 文件 test1.h test2.h test3.h test4.h 我们希望生成一个test可执行文件这时我们的Makefile可以写为 gcc test1.o test2.o test3.o test4.o -o test test1.o:test1.c gcc -c test原创 2021-07-24 22:03:16 · 96 阅读 · 0 评论 -
LINUX学习笔记—Makefile(一)
为什么使用Makefile 在linux下运行C语言源文件需要先使用gcc进行编译,在我们日常学习使用的过程中由于调用的源文件和头文件较少因此在linux命令行下运行不会太过麻烦,但一个大工程,源文件不计其数,其按类型、功能、模块分别放在若干个目录中,而makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令。 C语言运行的具体过程 预处理 将 .h .c 文原创 2021-07-24 15:40:09 · 75 阅读 · 0 评论 -
Linux系统编程—exec族函数
在Linux编程中我们使用fork()来创建新的进程,而子进程是父进程的副本,而有时我们希望通过子进程来执行另外的程序,而exec族函数可以按照指定的文件名或目录找到可执行的程序文件,并用来取代原来的数据段,代码段,堆栈段,该进程被完全替换为新程序。因为调用exec函数并不创建新进程,所以前后进程的ID并没有改变。并且这里的可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。 函数族:execl, execlp, execle, execv, execvp, execvpe 在man 2原创 2021-05-12 22:05:43 · 247 阅读 · 0 评论 -
LINUX学习—FTP云服务器
FTP服务器 通过之前的socket协议学习我们了解到原创 2021-05-08 17:22:05 · 114 阅读 · 1 评论 -
Linux系统编程—网络编程
我们在进程间通信的学习过程中了解到,进程间的通信方式有无名管道,FIFO有名管道,消息队列,共享内存,信号量等等,但这些通信方式都是依赖于Linux内核,无法实现不同主机之间的通信,而这时就需要借助网络进行通信。 而在网络编程之前我们要先了解一些基本概念: IP地址:IP即不同主机设备在以太网的位置 端口号:表示不同主机之间通信服务方式 字节序:字节序是指多字节数据在计算机内存中存储或网络传输时各字节的存储顺序 小端字节序:低序字节存储在起始地址 大端字节序:将高序字节存储在起始地址 SOCKET网络编程(原创 2021-03-31 17:44:10 · 119 阅读 · 1 评论 -
Linux系统编程—线程
在将线程之前就不得不再讲一下进程 进程与线程之间的关系 进程是资源分配的最小单位,线程是程序执行的最小单位,进程可以看做是一个控制线程,一个进程在同一时间只能做同一件事,而有多个控制线程,就能在同一时间做不同的事。一个线程属于一个进程,而一个进程可以有多个线程。进程是程序化的实例,是担当分配系统资源的基本单位,是分配系统资源的基本单位,一条线程指的是进程中一个单一顺序的控制流。线程包含了进程内执行环境必须的信息。 使用线程的原因 1,和进程相比线程所需要的资源更少,每开辟一个进程就需要分配给他独立的地址空间原创 2021-03-27 14:18:07 · 97 阅读 · 0 评论 -
Linux系统编程—进程间通信
Linux系统编程—进程间通信 什么是进程间通信: IPC是各种通信方式的统称,用于不同进程交换消息 常见的进程间通信方式有:管道,消息队列,共享内存,信号量,Socket,Streams等。其中Socket和Streams支持不同主机上的两个进程IPC 管道 特点: 1,它是半双工的,数据传输是单向的,具有固定的读端和写端。 2,它只能用于具有亲缘关系的进程之间的通信 3,它可以看成是一种特殊的文件,对于它的读写可以使用read,write函数。但它不属于任何文件系统,并且只存在于内存中 4, 管道中的数原创 2021-03-23 13:25:23 · 100 阅读 · 0 评论 -
Linux系统编程笔记—进程
Linux系统编程—进程程序与进程什么是程序?什么是进程?如何查看系统中有哪些进程什么是进程标识符?什么叫父进程,什么叫子进程C程序的存储空间怎么分配进程创建使用fork()创建进程 程序与进程 什么是程序? 程序是静态的概念,例如, gcc xxx.c -o a 磁盘中生成的a文件就叫做程序1 什么是进程? 进程则是动态的概念,程序的运行起来,系统中就多了一个进程 如何查看系统中有哪些进程 1,使用ps指令查看,配合grep来查找 ps -aux|grp xxx 2,使用top指令查看,类似window原创 2021-03-20 14:42:19 · 97 阅读 · 0 评论 -
Linux系统编程—文件编程(补充)
在上一篇博客中我们了解了Linux中关于文件的常用api及其用法 在本篇博客中我们将对这些api进行进一步运用 实现cp()函数功能 在Linux系统的vim编辑器中有一个用于文件复制的api :cp(); 例如我们在vim编辑器中创立一个文件vi demo1.c 在demo1.c中写入一段代码再使用cp函数 cp demo1.c demo2.c 这样demo1.c 中的内容就被复制到demo2.c中了 基本编程思想 1,打开Src文件 2,读Src到buf缓冲区 3,打开/创建Des 4,将buf缓冲原创 2021-03-17 23:12:22 · 70 阅读 · 0 评论 -
Linux系统编程笔记一文件编程
Linux系统编程笔记一文件编程文件编程常用apiopen()write()二级目录二级目录三级目录 文件编程常用api open() 在man 2手册中查看open函数的使用法则 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int原创 2021-03-16 21:55:48 · 106 阅读 · 0 评论