ph.c

来自「哲学家就餐问题的两种算法实现」· C语言 代码 · 共 44 行

C
44
字号
#include "head.h"
#include <sys/types.h>
#include <unistd.h>


main()
{
    int f1, f2, f3, f4;
    int i;
    pid_t pid, pidset[5];

    pipe(pidset);

    if( (pid = fork() ) < 0)
        err_sys("fork error");

    else if(pid > 0){
	for(i=0;i<4;i++)
            if(pid > 0){
                pidset[i] = pid;
                printf("stored pidset[%d]=%d\n",i,pidset[i]);
		if( (pid = fork() ) < 0)
                    err_sys("fork error");
                printf("create complete, pid=%d\n",pid);
            }
        if(pid > 0){
            pidset[i] = pid;
            write(pidset[0],
            sleep(20);
        }
    }

    else{
        sleep(2);

        for(i=0;i<5;i++){
            printf("getpid=%d  pidset[%d]=%d\n",getpid(),i,pidset[i]);
            if(getpid() == pidset[i])
                printf("this is ph%d\n", i+1);
	}
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?