
Unix环境编程事例
文章平均质量分 62
PipiAvenger
对Linux方面感兴趣,并且有一定的C语言基础
展开
-
Linux环境编程--网络通信socket编程笔记
一.网络通信模型 TCP/IP:Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。...原创 2018-03-01 17:15:01 · 595 阅读 · 1 评论 -
shell和makefile学习:编译当前目录下的.c或.cpp文件及执行对应生成的可执行文件
前言:编写背景:最近重新开始拿起书本继续学习,因此避免不了敲打一些书本上的代码进行测试,从而达到进一步加深印象的目的。编译大型的工程来说最适合使用makefile来编译,只需写好makefile文件,然后在命令行上敲make即可(小技巧:可以通过多核编译来提高效率 命令为make -j12)makefile实现:(目前支持C++编译)文件路径:头文件及源文件默认放在同一个路径下(可...原创 2019-03-18 14:57:11 · 2593 阅读 · 1 评论 -
Linux环境编程--文件描述符的使用以及常用来搭配的几个函数实例
一.文件描述符 对于内核而言,所有打开的文件、设备、网络socket都是通过文件描述符引用,文件描述符是一个非负整数。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时,使用open或creat返回的文件描述符表示该文件,将其作为参数床给read或write。 应用程序运行的时候,系统将会为该进程默认打开三个文件描述符: 标准输入:ST...原创 2018-02-25 20:43:25 · 376 阅读 · 1 评论 -
Linux环境编程--初学gdb使用例子
黄金搭档之一:gdb简单的调试例子 GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。他是学习指针、调试程序非常有用的工具和方法:程序代码运行环境: CentOS 6 Linux环境(用SecureCRT连接本机虚拟机)程序实例:读取网卡eth0中的IP地址、广播地址以及网址掩码调试代码:注:使用的是指针定向寻找...原创 2018-01-31 13:47:14 · 344 阅读 · 1 评论 -
Linux环境编程--如何用C语言创建多进程运行以及简单的pipe管道使用
进程: 每一个进程都有一个非负整数表示的唯一进程ID。当一个进程终止后,其进程ID就成为复用的候选者,大多数UNIX系统实现延时复用算法,使得赋予新建进程的ID不同于最近终止进程所使用的ID,防止将新进程误认为某个先前终止的进程。创建多进程: 这里就需要调用命令fork()或者vfork()fork(): 一个现有的进程可以调用fork()系统调用用来创建一个新的进程: p...原创 2018-02-01 14:07:31 · 3118 阅读 · 1 评论 -
Linux环境编程--多线程的工作原理以及多线程锁
多线程编程作用(使用目的) 线程是进程的一条执行路径,在UNIX中,线程是轻量级的进程。这点与windows不同。典型的UNIX进程可以看成只有一个主线程: 一个进程在某一时刻只能做一件事。 有了多线程之后,我们可以让一个进程同一时刻做不止一件事,每个线程处理各自独立的任务。 多线程与多进程之间的区别: 1.创建的方式不相同,多进程调用vfork()/fork()进行创建而多线...原创 2018-02-05 13:54:30 · 998 阅读 · 1 评论 -
Linux环境编程--信号的捕捉和使用
信号: 信号是软件中断,它提供了一种处理异步事件的方法。每个信号都有一个名字,这些名字都是以SIG开头。在Linux环境下查看各个信号的命令: kill -l: 在头文件<signal.h>中,信号名都被定义为正整数常量即信号编号。 在某个信号发生时,可以告诉内核按照下面三种方式进行处理: (1)忽略此信号 (2)捕捉此信号 (3)执行系统默认...原创 2018-02-07 16:24:01 · 380 阅读 · 1 评论 -
Linux环境编程--静态库和动态库的制作、调用
动/静态库的制作:静态库: 1.对.c文件进行汇编处理 gcc -c file1.c gcc -c file2.c ... 2.ar -rcs libxxxx.a *.0 (将所有.c文件打包成一个静态库)动态库: 1.gcc -shared -fpic -o libxxxx.so *.c注:1.系统默认安装了动态库,静态需...原创 2018-02-24 16:33:42 · 223 阅读 · 1 评论 -
Linux环境编程--Makefile的使用
一.使用目的 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 在 Linux(unix )环境下使用GNU 的make工具能够比较容易的构建一个属...原创 2018-02-26 09:41:05 · 334 阅读 · 2 评论 -
网络Socket--客户端的源代码解析
附上笔记之前的传送门:http://blog.youkuaiyun.com/PipiAvenger/article/details/79414863客户端: 1.客户端程序通过命令行参数指定服务器端的参数; 2.客户端程序在连接服务器时,发送自己的用户名和密码给服务器端; 2.如果用户名和密码出错则程序退出否则从标准输入中读入字符串,然后将该字符串发送给服务器端; ...原创 2018-03-05 20:27:54 · 828 阅读 · 1 评论 -
网络Socket--服务器端源代码解析
附送网络socket模型传送门http://blog.youkuaiyun.com/pipiavenger/article/details/79414863服务器端:(使用多线程来完成目标) 1.服务器端程序通过命令行参数指定服务器端的参数,并且服务器需要返回客户端的IP地址和端口; 2.服务器端验证客户端传过来的用户名和密码进行验证,如果出错将错误原因返回给客户端; 3.如...原创 2018-03-08 18:50:53 · 1858 阅读 · 1 评论 -
Shell脚本:删除.c文件编译生成的可执行文件elf(支持传其他路径的文件夹,默认当前路径)
编译.c文件生成的可执行文件一般都比较大,因此在不用的情况下可以进行适当的清理,如果.c文件对应生成的可执行文件数量较多,通过命令的方式去删除又较为麻烦,则可以通过下面这个脚本来实现:该脚本只保证.sh后缀及.c可执行文件不可删除外,其他只要是可执行文件均可删除:因此请注意该文件夹下是否有Makefile之类的可运行文件,请谨慎使用。#!/bin/bash# This shell is...原创 2019-03-18 17:44:51 · 629 阅读 · 0 评论