没有信号量的替代方案

时间:2018-04-08 13:23:23

标签: linux c

下面的程序会创建两个进程。

父进程打印0到9之间的数字,而 子进程打印从A到J的字符。

如何仅使用信号交替打印?所以不要使用信号量或任何IPC。

#include <stdio.h>

int main()
{
        int i = 0;
        if (fork() == 0) /* Child process */
        {
                for (i = 0; i < 10; i++) {
                        printf("%c\n", i + 65);
                }
        } else /* Parent process */
        {
                for (i = 0; i < 10; i++) {
                        printf("%d\n", i);
                }
        }
}

1 个答案:

答案 0 :(得分:1)

我明白了。

#include <stdio.h> 
#include <sys/types.h> 
#include <unistd.h> 
#include <errno.h> 
#include <sys/wait.h>
#include <signal.h>

int main()
{
        int i=0;
        int status;
        int childPID = fork();


        if (childPID == 0) /* Child process */
        {


                for(i=0;i<10;i++){

                     printf("%c\n",i+65);
                     kill(getpid(), SIGSTOP);
                }


        } else /* Parent process */
        {


                for(i=0;i<10;i++) {


                    waitpid(childPID,&status,WUNTRACED);
                    printf("%d\n",i);
                    kill(childPID, SIGCONT);
                }
        }
}