每日一练(二十二)

12.11 less 浏览文件内容

Linux中有时我们要产看一些文本文件,比如系统的配置文件,是以文本格式存储的,阅读配置文件可以更深入了解系统是如何工作的。而且脚本也是以这种格式存储的,less命令就是用来浏览文件内容的:

less filename

less产看文件的时候,支持文件的上下滚动显示(more只能向前翻页)

在这里插入图片描述
在这里插入图片描述

而且less支持在浏览文件的时候进行查找字符串:使用/字符串即可,非常方便!

12.12 type 显示命令的类型

type是一个shell内部命令,使用man type是查不到的。

type会显示命令的类型,使用:type command

在这里插入图片描述

由于type是一个shell内部命令,所以man是查不到的,要通过help来查看帮助文档。bash 有一个内建的帮助工具,可供每一个 shell 内建命令使用。输入“help”,接着是 shell 内部命令名:

在这里插入图片描述

12.13 Linux下进程间通信机制概述

Linux下进程间通信的机制是从UNIX继承而来的,UNIX进程间通信的标准的制定主要有两大主力:

  • AT&T的贝尔实验室:对早期UNIX进程间通信机制进行扩展,形成System V IPC,但是进程间通信限制在单个计算机内
  • BSD:突破单个计算机的进程间通信的限制,形成了基于套接字(socket)的进程间通信,可以用于网络中不同主机的进程间通信

所以Linux下的进程间通信是集百家之长,如下:

早期UNIX传统进程间通信方式:

  • 无名管道(pipe):用于亲缘关系的进程间通信
  • 有名管道(FIFO):允许无亲缘关系进程间通信
  • 信号(signal):信号是在软件层次上对中断机制的模拟,进程收到信号的处理过程和中断请求的处理过程类似

System V IPC:

  • 消息队列(message queue):克服来管道和信号通信方式中信息量有限的缺点,消息队列是消息的链接表
  • 共享内存(share memory):共享内存是最高效的进程间通信方式,使得多个进程可以访问同一块内存空间,但是需要同步机制,比如互斥锁、信号量
  • 信号量集(semaphore set):主要用于同步和互斥,经常于共享内存搭配使用

BSD开发的进程间通信机制:

  • 套接字(socket):可以用于网络中不同主机直接的进程间通信,使用非常广泛

12.14 获取整数个字节

获取0X12345678的各个字节!

有两种实现方法:

  • 利用联合体union和struct来做,和判断大小端的方法类似
  • 移位运算

代码如下:

#include <stdio.h>

union target {
	unsigned long int data;
	struct {
		unsigned char a;
		unsigned char b;
		unsigned char c;
		unsigned char d;
	}byte;
};

int main(int argc, char* argv[])
{
	union target t;
	int i;
	unsigned char byte;

	t.data = 0X12345678;

	printf("target is :0X%lx\n", t.data);
	printf("Byte is :0X%x 0X%x 0X%x 0X%x\n", t.byte.a, t.byte.b, t.byte.c, t.byte.d);

	for (i = 0; i < 4; i++) {
		byte = (t.data >> i*8) & 0X000000ff;
		printf("Byte%d is :0X%x\n", i, byte);
	}

	return 0;
}

在这里插入图片描述

12.15 函数原型、函数定义、函数声明 三者区别

函数原型:指明函数的名字,返回的类型,有几个参数,这几个参数是什么类型,不需要函数体,也不需要形式参数的名字,其中用分号作为原型的结束符

函数定义:必须要有完整的函数体、函数名字、形参的类型和名字

函数声明:只是告诉编译器该函数的存在,不分配空间,直到调用该函数时才分配

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值