摘要:
8.8 wait3和wait4函数-进程控制 wait3和wait4提供的功能比wait、waitpid和waitid所提供的功能要多一个,这与附加参数rusage有关。该参数要求内核返回由终止进程及其所有子进程使用的资源汇总。 #include #include #include #include pid_t wait3(int *statloc, int options, struct ru... 阅读全文
摘要:
8.7 waitid函数-进程控制 waitid函数类似于waitpid,但提供了更多的灵活性。 #include int waitid(idtype_t idtype, id_t id, siginfo_t *infop. int options);//返回值:成功返回0,出错返回-1与waitpid相似,waitid允许一个进程指定要等待的子进程。但它使用单独的参数表示要等待的子进程的类型... 阅读全文
摘要:
8.6 wait和waitpid函数-进程控制 当一个进程正常或异常终止时,内核就向其父进程发送SIGCHLD信号。因为子进程终止是个异步事件(这可以在父进程运行的任何时候发生),所以这种信号也是内核向父进程发的异步通知。父进程可以忽略该信号,或者提供一个该信号发生时即被调用执行的函数(信号处理程序)。对于这种信号的系统默认动作是忽略它。第1 0章将说明这些选择项。现在需要知道的是调用wait或w... 阅读全文
摘要:
8.5 exit函数-进程控制 如同7 . 3节所述,进程有三种正常终止法及两种异常终止法。 (1) 正常终止: a) 在main函数内执行return语句。如在7 . 3节中所述,这等效于调用exit。 b) 调用exit函数。此函数由ANSI C定义,其操作包括调用各终止处理程序(终止处理程序在调用a t exit函数时登录),然后关闭所有标准I / O流等。因为ANSI C并... 阅读全文
摘要:
8.4 vfork函数-进程控制 vfork函数的调用序列和返回值与fork相同,但两者的语义不同。 vfork用于创建一个新进程,而该新进程的目的是exec一个新程序(如上节(2) 中一样)。程序1 - 5中的shell基本部分就是这种类型程序的一个例子。vfork与fork一样都创建一个子进程,但是它并不将父进程的地址空间完全复制到子进程中,因为子进程会立即调用exec (或exit ),于是... 阅读全文
摘要:
8.3 fork函数-进程控制 一个现有进程可以调用fork函数创建一个新进程。 #include pid_t fork(void);//返回值:子进程中返回0,父进程中返回子进程ID。出错返回-1.由fork创建的新进程被成为子进程child process。fork函数被调用一次,但是返回两次,两次返回的唯一区别是子进程的返回值是0,而父进程的返回值是新子进程的进程ID。将子进程ID返回 父... 阅读全文