有关curses屏幕的输出(curses笔记二) 有关curses屏幕的输出 除了printw和refresh两个与屏幕输出密切相关的函数以外,还有一些基本的输出有关的函数:函数描述int addch(const chtype char_to_add)在光标位置添加字符int addchstr(chtype *const string_to_add)在光标位置添加字符串int printw(char *f...
用curses输出HelloWorld(curses笔记一) 用curses输出HelloWorld Linux/Unix编程往往都是在终端下进行的,但即使是基础文本的编程依然能够尽可能地实现很多图形控制,像vi可以实现在终端中全屏的编辑器就是基于curses的一个具体实现。 curses的名字起源于"cursor optimization",即光标优化。它最早由有美国伯克利大学的Bill Joy和Ken Arnold编写的,用来处理一个游戏rogu...
线程同步 文章目录线程同步互斥量读写锁线程同步 在没有线程这一概念的系统中,进程同时是可拥有资源和可独立调度及分派的基本单位。当引入线程概念之后,进程仅仅是可拥有资源的基本单位,而线程成为了可独立调度及分派的基本单位。这使得对于同一个进程的多个线程而言,它们将共享着同一地址空间、全局变量、文件等内容,方便了线程之间的通信、合作。但是这也需要让我们注意由于同步造成的一些老问题。互斥量 互斥量可以确...
管道 文章目录管道创建一个管道关闭不必要的管道端口让管道的某一端成为标准输入/输出管道 简单地说,管道可以将一个进程的输出作为另一个进程的输入:在shell中,一般用符号’ | '表示管道,如:gcc --help | wc -l,相当于将gcc的帮助手册作为wc的输入,wc将统计出该手册的行数并作为最后的输出。 实际上可以Linux仍然坚持着一切皆是文件的原则,将管道也视为文件。所以上面...
线程的接口 文章目录线程标识线程创建线程终止线程标识 和每个进程都会有一个起标识作用的进程ID一样,每个线程也都会有一个线程ID。两者间要注意的地方就是,进程ID在整个系统中是唯一的;而由于一个线程只会属于一个进程,因此线程ID在整个系统中不要求唯一,但是在同一个进程中的线程ID必须是唯一的。 进程ID是用pid_t数据类型来表示,而线程ID用pthread_t数据类型来表示,而这两个数据类型实质就...
递归函数与栈 文章目录递归函数与栈一二三三四五六七最后递归函数与栈 为了方便描述,将一个函数f(x)的栈帧以下图的方式进行简化:并用一个求阶乘的函数来解释递归函数与栈的联系:int fun(int N){ if(N == 1) return 1; return N*fun(N-1);}int main(int argc, char **argv){ fun(3); ...
函数调用与栈 文章目录函数调用与栈内存栈调用函数前调用函数时关于寄存器%ebp栈帧函数调用将要结束时函数调用结束后注函数调用与栈内存栈 在C语言中函数的调用必须借助于栈。 关于栈是什么就不再做笔记了,但需要注意的是,这里的栈与数据结构中的栈虽然原理相同但并不是一个东西。在这里,栈就是一段计算机内存,只不过这段内存满足数据后进先出的规则。 另外还需要注意的是,内存栈是向下增长的,即栈顶在下、栈底在...
文件锁定 文章目录文件锁定创建锁文件锁文件与共享文件的关系文件锁定 两个进程之间需要共享数据时可以通过文件来实现,即将共享的数据放于某一文件之中,而进程则分别读写这个文件(该文件被称为 共享文件 )。但是使用文件来共享数据的同时也必须要对文件加以控制,或者说制定一套让进程们合理访问文件的规则,即文件锁定。 例如,当某一个写进程正在操作文件时,给文件加一把"锁",使得读进程尝试访问该文件时需要先等待...
函数dup 文章目录函数dup/dup2函数dup/dup2 函数dup和函数dup2都用于复制一个文件描述符,其原型如下:#include <unistd.h>int dup(int fd);int dup2(int fd1, int fd2);两个函数在调用成功时都会返回一个新的描述符,若出错则会返回-1。 对于函数dup而言,dup会返回一个当前可用描述符中最小的一个...
内核用于I/O的数据结构 文章目录内核用于I/O的数据结构文件描述表文件表项v节点表项内核用于I/O的数据结构 一个进程除了指令、数据之外还会有一些信息用于记录进程的状态(这是程序所没有的)。在这些记录中就有一个表称之为文件描述表,而文件描述符就是这张文件描述表的索引。 下面是一张文件描述符表的示意图,除了文件描述符表之外还画出了其它与之相关的信息:文件描述表 文件描述表是进程记录表项中的一部分,文件描述...
system函数与exec函数 文章目录system函数与exec函数system函数exec系列函数system函数与exec函数启动另一个新的进程system函数 >> system函数的原型:#include <stdlib.h>int system(const char *string); >> system函数的作用: 运行一条命令并等待该命令的完成,该...
更多的文件I/O系统调用 文章目录文件I/O系统调用lseek系统调用fstat系统调用stat和lstat系统调用dup和dup2系统调用文件I/O系统调用 除了open、close、write、read这四个基本的低级文件I/O以外,其它的低级文件I/O如下:lseekfstatstatlstatduplseek系统调用 lseek用于设置将要读写文件的位置。相当于有一个指针,当指针指向文件内...
文件I/O的基本系统调用 文章目录文件I/O文件描述符open 和 openat文件I/O 有关文件I/O的Linux系统调用主要有5个函数:openreadwritelseekclose文件描述符 文件描述符是一个非负整数。当一个进程打开( open )一个文件时,系统就会返回给进程一个文件描述符,而该进程就可以通过这个文件描述符来对打开的文件进行读/写( read / write )。 很...
ELF格式大致描述 ELF格式ELF文件类型 ELF是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件的文件格式。是Linux上二进制文件的标准格式。 ELF有四种类型:重定位文件( ET_REL ),也就是常称的目标文件可执行文件( ET_EXEC )共享目标文件( ET_DYN ),即共享对象文件、动态库文件核心转储文件( ET_CORE )除此之外还会有类型不确定的EL...
程序参数 文章目录程序参数简单的带参数示例getopt函数>> 关于getopt的参数>> 关于getopt的返回值及一些行为>> getopt函数的简单示例getopt_long函数>> getopt_long的简单示例>> struct option结构>> 运行结果注程序参数 许多命令行运行的C程序都会有可选(或必须要有)的...
编程的基本概念(C++) 编程的流程编程的流程主要分为 编辑->编译->链接 三个步骤每个步骤都会生成相应的文件,其过程如图1所示。 图1 编辑编辑是编程的第一步,即编辑代码,而用来编辑的工具就是编辑器。大部分电脑自带的记事本就是一个编辑器,但是记事本没有自动缩进、语法高亮等帮助编辑代码的功能,所以一般不会用记事本来编辑代码。像Visual Studio就会自带编...
结构的定义与使用 什么是结构我们把相同元素的集合称为数组,类似地,将任意类型元素的集合称为结构(struct)。例如:struct people{ const char* name; int age; const char* sex; int id;};struct是一种class,但是它的成员是默认为public的。它也可以包含成员函数(包括构造函数)。结构的定义结构的定义是定义了一种数据类型(如int,上面的例...
const类型限定符 const限定符const关键字用于限定一个变量为只读,即其值不能通过赋值、递增、递减等操作来修改。(但允许初始化)如:----------------------------------------const int X;X = 0;//编译器报错,该操作不被允许-----------------------------------------const int X = 0;//初始化操作被允许...
字符的输入和输出——getchar()和putchar() I/O是什么??I/O就是input和output的缩写,即输入和输出。像鼠标、键盘、显示器与主机连接的接口称为I/O接口,这些都是与主机进行信息输入或输出的设备;头文件stdio.h,其名称的意义为“standard input & output(标准输入和输出)”;而printf()、scanf()、getchar()、putchar()等等都属于I/O函数,这些函数都用于做信息的交换...
插入排序法 C++实现 //插入排序法比较简单,就只贴上代码和运行结果//升序排列和降序排列都写了一遍,基本是一样【代码】#include <iostream>using namespace std;int main(){ int n, *a; cout << "请输入乱序数字的个数:"; cin >> n;//-----------------------------...