📄 00000019.htm
字号:
功能:关闭到一个进程的管道. <BR> 语法:#include <stdio.h> <BR> int pclose(strm) <BR> FILE *strm; <BR> 说明:本系统调用用于关闭由popen()打开的管道,并会等待由popen() <BR> 激活的命令执行结束后,关闭管道后读取命令返回码. <BR> 返回值:若关闭的文件描述符不是由popen()打开的,则返回-1. <BR> 例子:printf("now this process will call popen system call\n"); <BR> FILE * fd; <BR> if ((fd=popen("ps -ef","r"))==NULL) { <BR> printf("call popen failed\n"); <BR> return; <BR> } <BR> else { <BR> char str[80]; <BR> while (fgets(str,80,fd)!=NULL) <BR> printf("%s\n",str); <BR> } <BR> pclose(fd); <BR> 6.wait() <BR> 功能:等待一个子进程返回并修改状态 <BR> 语法:#include <sys/types.h> <BR> #include <sys/wait.h> <BR> pid_t wait(stat_loc) <BR> int *stat_loc; <BR> 说明:允许调用进程取得子进程的状态信息.调用进程将会挂起直到其 <BR> 一个子进程终止. <BR> 返回值:等待到一个子进程返回时,返回值为该子进程号,否则返回值为 <BR> -1.同时stat_loc返回子进程的返回值. <BR> 例子:/*父进程*/ <BR> if (fork()>0) { <BR> wait((int *)0); <BR> /*父进程等待子进程的返回*/ <BR> } <BR> else { <BR> /*子进程处理过程*/ <BR> exit(0); <BR> } <BR> 7.waitpid() <BR> 功能:等待指定进程号的子进程的返回并修改状态 <BR> 语法:#include <sys/types.h> <BR> #include <sys/wait.h> <BR> pid_t waitpid(pid,stat_loc,options) <BR> pid_t pid; <BR> int *stat_loc,options; <BR> 说明:当pid等于-1,options等于0时,该系统调用等同于wait().否则该 <BR> 系统调用的行为由参数pid和options决定. <BR> pid指定了一组父进程要求知道其状态的子进程: <BR> -1:要求知道任何一个子进程的返回状态. <BR> >0:要求知道进程号为pid值的子进程的状态. <BR> <-1:要求知道进程组号为pid的绝对值的子进程的状态. <BR> options参数为以比特方式表示的标志以或运算组成的位图,每个 <BR> 标志以字节中某个比特置1表示: <BR> WUNTRACED:报告任何未知而又已停止运行的指定进程号的子进 <BR> 程的状态.该子进程的状态自停止运行时起就没有被报告 <BR> 过. <BR> WCONTINUED:报告任何继续运行的指定进程号的子进程的状态, <BR> 该子进程的状态自继续运行起就没有被报告过. <BR> WHOHANG:若调用本系统调用时,指定进程号的子进程的状态目 <BR> 前并不是立即有效的(即可被立即读取的),调用进程并被 <BR> 暂停执行. <BR> WNOWAIT:保持将其状态设置在stat_loc的进程在可等待状态. <BR> 该进程将等待直到下次被要求其返回状态值. <BR> 返回值:等待到一个子进程返回时,返回值为该子进程号,否则返回值为 <BR> -1.同时stat_loc返回子进程的返回值. <BR> 例子:pid_t pid; <BR> int stat_loc; <BR> /*父进程*/ <BR> if ((pid=fork())>0) { <BR> waitpid(pid,&stat_loc,0); <BR> /*父进程等待进程号为pid的子进程的返回*/ <BR> } <BR> else { <BR> /*子进程的处理过程*/ <BR> exit(1); <BR> } <BR> /*父进程*/ <BR> printf("stat_loc is [%d]\n",stat_loc); <BR> /*字符串"stat_loc is [1]"将被打印出来*/ <BR> 8.setpgrp() <BR> 功能:设置进程组号和会话号. <BR> 语法:#include <sys/types.h> <BR> pid_t setpgrp() <BR> 说明:若调用进程不是会话首进程.将进程组号和会话号都设置为与它 <BR> 的进程号相等.并释放调用进程的控制终端. <BR> 返回值:调用成功后,返回新的进程组号. <BR> 例子:/*父进程处理*/ <BR> if (fork()>0) { <BR> /*父进程处理*/ <BR> } <BR> else { <BR> setpgrp(); <BR> /*子进程的进程组号已修改成与它的进程号相同*/ <BR> exit(0); <BR> } <BR> 9.exit() <BR> 功能:终止进程. <BR> 语法:#include <stdlib.h> <BR> void exit(status) <BR> int status; <BR> 说明:调用进程被该系统调用终止.引起附加的处理在进程被终止前全 <BR> 部结束. <BR> 返回值:无 <BR> 10.signal() <BR> 功能:信号管理功能 <BR> 语法:#include <signal.h> <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -