美文网首页
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