- 博客(8)
- 收藏
- 关注
原创 I/O
I/O?输入/输出(I/O)是主存和外部设备(例如磁盘驱动器、终端和网络)之间复制数据的过程。 输入操作是从I/O设备复制数据到主存,而输出操作是从主存复制数据到I/O设备。Unix I/O一个Linux文件就是一个m字节的序列。打开文件。应用程序要求内核打开相应的文件,一次访问I/O设备。内核返回一个很小的非负整数,叫做描述符(fd),他在后续对此文件的所有操作中标识这个文件。内核记录有...
2019-12-08 23:27:04 150
原创 fork
fork:一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己...
2019-12-08 23:25:25 116
原创 静态链接
驱动器驱动程序大多数编译系统会提供 编译器驱动程序,它代表用户在需要时调用语言预处理器、编译器、汇编器和链接器。main.c:#include <stdio.h>int sum(int *a, int n);int array[2] = {1, 2};void main(){int val = sum(array, 2);printf("%d\n",val);}...
2019-12-08 23:24:13 99
原创 函数gets()的实现
char *gets(char *dest){int c = getchar();char *p = dest;while (c != EOF && c != ‘\n’) {*p++ = c;c = getchar();}*p = ‘\0’;return dest;}读取输入行并将其返回:void echo(){char buf[4];gets(buf...
2019-05-27 20:19:59 2759 1
原创 浮点数及可能出现的精度缺失
#include <stdio.h>#include <stdlib.h>#include <string.h>#define BUFSIZE 256int main(int argc, char *argv[]) {char prefix[BUFSIZE];char next[BUFSIZE];int i;float sum = 0.0;fo...
2019-05-27 20:19:17 390
原创 将命令行上的十六进制数字序列转换为字符串
#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]) {int i;for (i = 1; i < argc; i++) {unsigned long dig = strtoul(argv[i], NULL, 16);putchar((char) dig);}putc...
2019-05-27 20:17:39 606
原创 存入数据的地址与上一个数据的地址有关,并且会影响下一个数据的地址
#include <stdlib.h>#include <stdio.h>#include <unistd.h>static void show_pointer(void *p, char *descr) {// printf(“Pointer for %s at %p\n”, descr, p);printf("%s\t%p\t%lu\n", ...
2019-05-27 20:17:06 228
原创 深度递归示例
深度递归示例:#include <stdio.h>#include <stdlib.h>int recurse(int x) {int a[1<<15]; /* 4 * 2^15 = 64 KiB */printf(“x = %d. a at %p\n”, x, a);a[0] = (1<<14)-1;a[a[0]] = x-1;...
2019-05-27 20:15:13 298
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人