• 大小: 6.13KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-03-27
  • 语言: 其他
  • 标签: 其他  

资源简介


参考以上示例程序中建立并发进程的方法,编写一个多进程并发执行程序。父进程每隔 3 秒重复建立两个子进程,首先创建的让其执行 ls 命令,之后创建执行让其执行 ps 命令,并控制 ps 命令总在 ls 命令之前执行。

资源截图

代码片段和文件信息

#include“pctl.h“

int  main( ){
signal(SIGINT(sighandler_t)sigcat);
char *argsa[]={“/bin/pwd“NULLNULL};
int i;
int pida;//childa‘s pid
int pidb;//childb‘s  pid
int statusa;//childa‘s status
int statusb;//childb‘s status
while(1){
if((pida=fork())==0){
pause();
printf(“%dChilda: This is childa running \n“getpid());
printf(“%dChilda: My pid is %d\n“getpid());
printf(“%dChilda: My father‘s pid is %d\n“getpid()getppid());
statusa=execve(argsa[0]argsaNULL);

}
else {
pidb=fork();
if(pidb<0){
printf(“Create process pidb fail\n“);
exit(EXIT_FAILURE);
}
else if(pidb==0){

pause();
printf(“%dChildb: This is childb running \n“getpid());
printf(“%dChildb: My pid is %d\n“getpid());
printf(“%dChildb: My father‘s pid is %d\n“getpid()getppid());
statusb=execve(“/bin/ls“NULLNULL);
}


else {

printf(“%dFather: This is father running \n“getpid());
printf(“%dFather: My pid is %d\n “getpid()getpid());
if(kill(pidaSIGINT)>=0){
waitpid(pida&statusa0);
sleep(3);
printf(“%dFather: Child

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

 -rw-rw-r--      1163  2010-04-07 20:42  exp1\pctl.c

 -rw-rw-r--      6688  2010-04-07 20:05  exp1\pctl.o

 -rwxrwxr-x     10859  2010-04-07 20:05  exp1\pctl

 -rw-rw-r--       170  2010-04-05 22:52  exp1\Makefile

 -rw-rw-r--       185  2010-04-05 22:37  exp1\pctl.h

 drwxrwxr-x         0  2010-05-25 12:00  exp1

----------- ---------  ---------- -----  ----

                19065                    6


评论

共有 条评论