不灭的焱

革命尚未成功,同志仍须努力下载JDK17

作者:Albert.Wen  添加时间:2016-02-13 21:07:40  修改时间:2024-05-09 22:49:01  分类:C/C++/Rust  编辑
头文件 说明
<assert.h> 验证程序断言
<complex.h> 复数算术运算支持
<ctype.h> 字符分类和映射支持
<errno.h> 出错码
<fenv.h> 浮点环境
作者:Albert.Wen  添加时间:2017-10-27 10:02:50  修改时间:2024-04-24 08:37:51  分类:C/C++/Rust  编辑

1、 管道概述及相关API应用

1.1 管道相关的关键概念

管道是Linux支持的最初Unix IPC形式之一,具有以下特点:

  • 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;
  • 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);
  • 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。
  • 数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。
作者:Albert.Wen  添加时间:2017-10-27 09:47:24  修改时间:2024-05-09 08:50:43  分类:C/C++/Rust  编辑

一、什么是管道

如果你使用过Linux的命令,那么对于管道这个名词你一定不会感觉到陌生,因为我们通常通过符号“|"来使用管道,但是管理的真正定义是什么呢?管道是一个进程连接数据流到另一个进程的通道,它通常是用作把一个进程的输出通过管道连接到另一个进程的输入。

举个例子,在shell中输入命令:ls -l | grep string,我们知道ls命令(其实也是一个进程)会把当前目录中的文件都列出来,但是它不会直接输出,而是把本来要输出到屏幕上的数据通过管道输出到grep这个进程中,作为grep这个进程的输入,然后这个进程对输入的信息进行筛选,把存在string的信息的字符串(以行为单位)打印在屏幕上。

作者:Albert.Wen  添加时间:2017-10-26 17:48:14  修改时间:2024-05-12 09:17:48  分类:C/C++/Rust  编辑

一、sprintf() 函数详解

在将各种类 型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。

由于 sprintfprintf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致 sprintf 比 printf 有用得多。所以本文着重介绍 sprintf,有时也穿插着用用 pritnf。

sprintf是个变参函数,定义如下:

int sprintf( char *buffer, const char *format [, argument] … );

除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:格式化字符串上。

作者:Albert.Wen  添加时间:2015-02-27 00:01:10  修改时间:2024-05-16 02:12:43  分类:C/C++/Rust  编辑
作者:Albert.Wen  添加时间:2017-12-13 14:33:06  修改时间:2024-04-30 06:31:44  分类:C/C++/Rust  编辑
void Function(void) {
    char *p = (char *) malloc(100 * sizeof(char));
}

就这个例子,千万不要认为函数返回,函数所在的被销毁指针(变量)也跟着销毁,申请的内存也就一样跟着销毁了!这绝对是错误的!因为申请的内存在上,而函数所在的栈被销毁跟堆完全没有啥关系。所以,还是那句话:记得释放 free()!

作者:Albert.Wen  添加时间:2017-10-26 14:40:28  修改时间:2024-05-14 23:25:16  分类:C/C++/Rust  编辑

Reactor这个词译成汉语还真没有什么合适的,很多地方叫反应器模式,但更多好像就直接叫reactor模式了,其实我觉着叫应答者模式更好理解一些。通过了解,这个模式更像一个侍卫,一直在等待你的召唤,或者叫召唤兽。

并发系统常使用reactor模式,代替常用的多线程的处理方式,节省系统的资源,提高系统的吞吐量。

作者:Albert.Wen  添加时间:2017-12-13 14:48:02  修改时间:2024-05-15 19:00:05  分类:C/C++/Rust  编辑

用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:

char *pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, 和一个字符变量;
作者:Albert.Wen  添加时间:2014-11-03 08:21:09  修改时间:2024-05-13 17:08:52  分类:C/C++/Rust  编辑

main 函数形式:

int main(int argc, char *argv[])
main函数是有参数的,而且有返回值
argc:参数的个数
argv[]:指针数组,存放是具体的参数列表

作者:Albert.Wen  添加时间:2014-11-02 14:31:57  修改时间:2024-05-13 17:59:22  分类:C/C++/Rust  编辑

系统定义的头文件:

/usr/include
/usr/local/include
/usr/target/include

自己定义的头文件路径,默认在执行这个程序的路径,即当前

库文件:

/lib  (是别人已经开发好的函数编译的目标文件,可重定位的。)
C函数库。