C语言学习笔记-进程和系统调用

一.使用system系统调用函数

system()接收一个字符串参数,并把它当成命令执行

例如:

system("dir D:")打印D盘内容

system("gedit")在linux中启动编辑器

system("say 'End of line'") 在mac上阅读文本

二.使用elec()系统调用函数

elec函数位于unistd.h的头文件中,该函数调用进程成功时,系统会停止运行当前程序,去运行调用的程序。

elecl() = 参数列表

elecle()=参数列表+环境变量

eleclp()=参数列表+搜索PATH

扫描二维码关注公众号,回复: 7667711 查看本文章

elecv()=参数数组

elecve()=参数数组+环境变量

elecvp()=参数数组+搜索PATH

在使用elec()函数时应该使用NULL结束参数列表

可以使用getenv()函数读取环境变量

三.errno变量

errno变量是定义在errno.h中的全局变量

exec()函数调用出错会返回-1,系统调用再出错的同时将errno变量设为错误码

errno的标准错误码:

EPERM=1 不允许操作

ENOENT=2 没有该文件或目录

ESRCH=3 没有该进程

可以使用strerror将错误码转换为一条消息

puts(strerrot(errno));

四.使用fork()克隆进程

使用fork()函数复制当前进程

在成功运行exec()后会替换掉当前进程,使用fork函数复制当前进程并运行exec创建子进程,便于父进程中实现原程序的循环

使用方法:

pid_t pid=fork()

fork会返回一个整数为子进程返回0,为父进程返回一个正数,父进程将接收子进程的进程标识符

pid_t函数用于存放进程标识符

使用fork()+exec()组合,创建并运行独立进程,不但能更好的利用现有软件,而且还能提高程序的性能。

 

猜你喜欢

转载自www.cnblogs.com/renren-study-notes/p/11754436.html