linux C编程之基本的函数

1.system函数:创建一个新进程,即在一个程序的内部启动另一个程序,Linux中通过库函数system完成

基本语法

#include<stdlib.h>

int system(const char *string)

system函数的作用是:运行以字符串参数的形式参数传递给他的命令并等待命令完成;命令的执行情况就如同在shell中执行如下命令: sh  -c  stirng;如果shell无法执行该命令,则返回127,如果是其他错误,则返回-1,执行成功就返回该命令执行完成的代码。

system函数的缺点:阻塞式的(父进程必须等待子进程完成后才能继续);如果采用&使进程后台运行的话,又不会有好的用户体验;system函数是通过shel来启动进程,所以依赖的shell程序及路径。

2.exec系列函数:exec系列函数由一组相关的函数组成,用于把当前进程替换为新进程,新进程由path或file参数指定。

基本语法

#include<unistd.h>

char **environ;

int execl(const char *path,const * arg0, ... , (char *)0)

int execlp(const char *file,const * arg0, ... , (char *)0)

int execle(const char *file,const * arg0, ... , (char *)0)

说明:这3个函数带有可变参数列表,该列表的参数用于传递给新进程的main函数;execl指从绝对路径启动程序,execlp函数是指从环境变量搜索可执行程序;execle函数是指从环境变量所指定的路径启动程序;该系列函数执行发生错误时返回-1。

3.fork函数

fork函数也可以启动一个新进程,其方法是复制当前进程。

fork函数在进程表中创建一个新的表项,新表项的许多属性与当前进程是相同的,执行的代码也完全相同,但新表项有自己的数据空间,环境和文件描述符。

基本语法:

#include<sys/types.h>

#include<unistd.h>

pid_t fork(void)

说明:父进程的fork调用返回的是新的子进程的pid,新子进程继续执行,就像塬进程一样;不同之处在于,子进程的fork调用返回的是0,父子进程就是通过这一点来区分彼此的;fork调用失败返回-1,

fork函数使用进阶:
当用fork启动一个子进程时,子进程就有了其自身的生命周期并将独立运行。
如果想知道子进程何时运行结束,可以通过wait函数,让父进程等待子进程结束后再结束。

4.wait函数

pid_t wait(int *stat_loc)

说明:wait函数返回已结束的子进程的PID;stat_loc参数用来保存一个状态信息,该信息将被父进程用于来了解子进程的状态,该值就是进程中exit函数的状态码;可以直接使用该参数进行判断,还可以使用sys/wait.h中的宏来了解状态信息。





















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值