ITEEDU

三、目录函数,所在函数库为dir.h、dos.h

int chdir(char *path) 使指定的目录path(如:"C:\\WPS")变成当前的工作目录,成功返回0

int findfirst(char *pathname,struct ffblk *ffblk,int attrib)

查找指定的文件,成功返回0

pathname为指定的目录名和文件名,如"C:\\WPS\\TXT"

ffblk为指定的保存文件信息的一个结构,定义如下:

struct ffblk 
{ 
char ff_reserved[21]; /*DOS保留字*/ 
char ff_attrib; /*文件属性*/ 
int ff_ftime; /*文件时间*/ 
int ff_fdate; /*文件日期*/ 
long ff_fsize; /*文件长度*/ 
char ff_name[13]; /*文件名*/ 
} 

attrib为文件属性,由以下字符代表

FA_RDONLY 只读文件 FA_LABEL 卷标号

FA_HIDDEN 隐藏文件 FA_DIREC 目录

FA_SYSTEM 系统文件 FA_ARCH 档案

例:

struct ffblk ff; 
findfirst("*.wps",&ff,FA_RDONLY); 
int findnext(struct ffblk *ffblk) 取匹配finddirst的文件,成功返回0 
void fumerge(char *path,char *drive,char *dir,char *name,char *ext) 

此函数通过盘符drive(C:、A:等), 路径dir(\TC、\BC\LIB等), 文件名name(TC、WPS等),扩展名ext(.EXE、.COM等)组成一个文件名存与path中.

int fnsplit(char *path,char *drive,char   *dir,char *name,char *ext) 

此函数将文件名path分解成盘符drive(C:、A:等), 路径dir(\TC、\BC\LIB等), 文件名name(TC、WPS等),扩展名ext(.EXE、.COM等),并分别存入相应的变量中.

int getcurdir(int drive,char *direc)

此函数返回指定驱动器的当前工作目录名称。成功返回0

drive 指定的驱动器(0=当前,1=A,2=B,3=C等)

direc 保存指定驱动器当前工作路径的变量

char *getcwd(char *buf,iint n) 此函数取当前工作目录并存入buf中,直到n个字节长为为止.错误返回NULL

int getdisk() 取当前正在使用的驱动器,返回一个整数(0=A,1=B,2=C等)

int setdisk(int drive) 设置要使用的驱动器drive(0=A,1=B,2=C等), 返回可使用驱动器总数

int mkdir(char *pathname) 建立一个新的目录pathname,成功返回0

int rmdir(char *pathname) 删除一个目录pathname,成功返回0

char *mktemp(char *template) 构造一个当前目录上没有的文件名并存于template中

char *searchpath(char *pathname) 利用MSDOS找出文件filename所在路径, 此函数使用DOS的PATH变量,未找到文件返回NULL

四、进程函数,所在函数库为stdlib.h、process.h

void abort() 此函数通过调用具有出口代码3的_exit写一个终止信息于stderr,并异常终止程序。无返回值

int exec…装入和运行其它程序

int execl(char *pathname,char *arg0,char *arg1,…,char *argn,NULL) 
int execle(char *pathname,char *arg0,char *arg1,…, char *argn,NULL,char *envp[]) 
int execlp(char *pathname,char *arg0,char *arg1,…,NULL) 
int execlpe(char *pathname,char *arg0,char *arg1,…,NULL,char *envp[]) 
int execv(char *pathname,char *argv[]) 
int execve(char *pathname,char *argv[],char *envp[]) 
int execvp(char *pathname,char *argv[]) 
int execvpe(char *pathname,char *argv[],char *envp[]) 

exec函数族装入并运行程序pathname,并将参数arg0(arg1,arg2,argv[],envp[])传递给子程序,出错返回-1。

在exec函数族中,后缀l、v、p、e添加到exec后,所指定的函数将具有某种操作能力。

有后缀 p时,函数可以利用DOS的PATH变量查找子程序文件。

l时,函数中被传递的参数个数固定。

v时,函数中被传递的参数个数不固定。

e时,函数传递指定参数envp,允许改变子进程的环境,

无后缀 e时,子进程使用当前程序的环境。

void _exit(int status) 终止当前程序,但不清理现场

void exit(int status) 终止当前程序,关闭所有文件,写缓冲区的输出(等待输出), 并调用任何寄存器的"出口函数",无返回值

int spawn…运行子程序

int spawnl(int mode,char *pathname,char *arg0,char *arg1,…, char *argn,NULL) 
int spawnle(int mode,char *pathname,char *arg0,char *arg1,…, char *argn,NULL,char *envp[]) 
int spawnlp(int mode,char *pathname,char *arg0,char *arg1,…, char *argn,NULL) 
int spawnlpe(int mode,char *pathname,char *arg0,char *arg1,…, char *argn,NULL,char *envp[]) 
int spawnv(int mode,char *pathname,char *argv[]) 
int spawnve(int mode,char *pathname,char *argv[],char *envp[]) 
int spawnvp(int mode,char *pathname,char *argv[]) 
int spawnvpe(int mode,char *pathname,char *argv[],char *envp[]) 

spawn函数族在mode模式下运行子程序pathname,并将参数arg0(arg1,arg2,argv[],envp[])传递给子程序.出错返回-1

mode为运行模式:

mode为 P_WAIT 表示在子程序运行完后返回本程序

P_NOWAIT 表示在子程序运行时同时运行本程序(不可用)

P_OVERLAY 表示在本程序退出后运行子程序

在spawn函数族中,后缀l、v、p、e添加到spawn后,所指定的函数将具有某种操作能力

有后缀 p时, 函数利用DOS的PATH查找子程序文件

l时, 函数传递的参数个数固定.

v时, 函数传递的参数个数不固定.

e时, 指定参数envp可以传递给子程序,允许改变子程序运行环境.

无后缀 e时,子程序使用本程序的环境.

int system(char *command)

将MSDOS命令command传递给DOS执行转换子程序,函数库为math.h、stdlib.h、ctype.h、float.h