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,加载一个新程序,执行新的程序
网友评论