1.在IO进程学习中要掌握应用程序与库函数,系统调用函数,以及内核之间调用关系。
在程序中,所有的资源都是内核在进行管理,只能由内核进行操作,但是应用程序有时想得到这些资源,内核就提供一些固定的操作方式,通过函数来提供;只要在应用程序中调用函数,应用程序就可以通过内核访问。
2.C语言库函数IO(常用指令总结)
(1)打开文件
#include <stdio.h>
//
打开一个对应字符串表示文件名字的文件
FILE
*
fopen
(
const
char *
pathname
,
const
char *
mode
);
(2)关闭文件
#include <stdio.h>
//
关闭指定的文件
int
fclose
(
FILE
*
stream
);
(3)写文件==从程序-输出-文件
#include <stdio.h>
//
把
format
字符串输出到指定的文件
stream
中
int
fprintf
(
FILE
*
stream
,
const
char *
format
, ...);
(4)
读文件==从文件-输入-程序
#include <stdio.h>
//
从指定的文件
stream
中读取内容与
format
字符串进行匹配,把匹配格式化的数据输入到程序程 序中
int
fscanf
(
FILE
*
stream
,
const
char *
format
, ...);
(5)单个字符读写以及多个字符读写
#include <stdio.h>
//
从文件中读取一个字符,输入到程序中
int
fgetc
(
FILE
*
stream
);
//
一次从文件中读取多个字符,最多读取
size-1
个字符,在读取多个字符时,在
size - 1
大小
以内,读取到
'\n'
字符就结束;或这一次读取已经把文件最后一个字符读取完 还是小于
size -
1
也结束;不然就是读取
size - 1
个字符,读取完成后在读取的最后一个字符后加上
'\0'
char *
fgets
(
char *
s
,
int
size
,
FILE
*
stream
);
(6)指定大小读写
#include <stdio.h>
//
读取指定大小的文件内容,输入到程序中
;
指定大小:读取数据个数
*
每个数据的字节
size_t
fread
(
void *
ptr
,
size_t
size
,
size_t
nmemb
,
FILE
*
stream
);
以上这些常用的库函数指令,是我们需要多加练习的,每一个指针,变量都要明白其含义,才能在写程序的时候能够娴熟的运用。
3.IO进程多文件编程
多文件就是,把原来写在一个文件中的函数,按照一定的方式分别写在多个文件中,在编译把多个文件合并成一个可执行程序(
在编译的第
4
步
--
链接
)
~~操作过程:
1.
编写代码,分为多个文件编写,把多个功能函数写在不同的文件中
2.
在调用函数的文件,把被调用的函数进行声明
3.
编译代码,把多个文件合并成一个可执行程序
gcc xxx1.c xxx2.c xxx3.c [-o
目标名
]
4.make:工程管理器(了解会用)
make
工具通过
makefile
(
Makefile
)文件书写怎么进行编译,怎么进行管理项目
5.库的制作(静态和动态)
(1)静态库的制作
gcc -c xxx.c -o xxxx.o
ar crs lib
库名
.a xxxx.o
gcc -o
可执行程序目标
xxxx.c -L
路径
-l
库名
(2)
动态库的制作
gcc -Wall -fPIC -c xxxx.c -o xxxx.o
gcc -shared xxxx.o -o lib
库名
.so
gcc -o
可执行程序目标
xxxx.c -L
路径
-l
库名
6.IO进程(进程)
该内容是学习的重点,所以学习的时候我们一定要多加已练习
(1)概念:
进程就是一个正在执行的程序,叫进程。
(2)分类:
-
交互进程 -
-
批处理进程 -
-
守护进程 -
(3)进程的执行状态
就绪态(运行态)
~ 进程正在运行或准备运行
等待态
~ 进程正在等待某个事件产生或某个资源,才可以执行
~ 可中断
~ 不可中断
停止态
~ 进程被中止
死亡态(僵尸态)
~ 这时,是一个终止状态,等待资源回收而已
(4)进程执行
被创建的进程叫做子进程,去执行创建的进程叫做父进程
~ 创建子进程
#include <sys/types.h>
#include <unistd.h>
//在当前进程中,创建一个子进程,当前进程是父进程,被创建的进程是子进程,创建时(fork()),把父
进程的所有内容
(
堆、栈、数据段、代码段等
)
都复制一份给子进程的内存,子进程从
fork
结束(返回值)开始
执行
进程学习我们要掌握如何创建进程,分清楚谁是父进程,以及谁是子进程,他们之间的区别不同之处,各自的功能。
最后整理了我们需要用到的一些头文件,我们用到的功能一定要写上其对应的 “头文件” 才能使用
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/stat.h>
#include <fcntl.h>
以上就是IO进程学习的总结和体会,希望在接下来的学习中有更多的收获。