美文网首页
2018-04-08

2018-04-08

作者: fhysmile | 来源:发表于2018-04-08 17:41 被阅读0次

fork()函数

计算机程序设计中的分叉函数。返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记;否则,出错返回-1。

fork函数将运行着的程序分成2个(几乎)完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程。这两个进程中的线程继续执行,就像是两个用户同时启动了该应用程序的两个副本。

execvp()函数 :执行文件函数。

c语言中执行文件函数。

相关函数:fork, execl, execle, execlp, execv, execve

头文件:#include <unistd.h>

定义函数:int execvp(const char *file, char * const argv []);

函数说明:execvp()会从PATH 环境变量所指的目录中查找符合参数file 的文件名, 找到后便执行该文件, 然后将第二个参数argv 传给该欲执行的文件。

返回值:如果执行成功则函数不会返回, 执行失败则直接返回-1, 失败原因存于errno 中.

范例

/*请与execlp ()范例对照 */

#include

main()

{

char * argv[] = {"ls", "-al", "/etc/passwd", 0};

execvp("ls", argv);

}

执行结果:

-rw-r--r-- 1 root root 705 Sep 3 13 :52 /etc/passwd

wait()函数

在计算机领域它还是一种Java术语,C语言中也有wait命令。

wait()函数成功返回等待子进程的pid,失败返回-1

表头文件

#include<sys/types.h>

#include<sys/wait.h>

函数原型

pid_t wait (int * status);

waitpid()

函数功能:用来等待某个特定进程的结束

函数原型:

    pid_t waitpid(pid_t pid, int*status,int options);

参数:

    status如果不为空,会把状态信息写到它指向的位置

    options允许改变waitpid的行为,最有用的一个选项是WNOHANG,它的作用是防止waitpid把调用者的执行挂起

返回值:成功返回等待子进程的pid,失败返回-1

小结:

系统调用fork(),与_exit(), wait(),和execve()等系统调用都是有关于进程创建与终止的。

系统调用fork允许一个进程(父进程)创建新进程(子进程)

库函数exit负责终止进程,将进程占用资源释放,交还给系统

系统调用wait 父进程用来获取子进程状态

系统调用execve,加载一个新程序,执行新的程序

相关文章

网友评论

      本文标题:2018-04-08

      本文链接:https://www.haomeiwen.com/subject/mxrmhftx.html