これを行うには、2 つの子プロセスが必要です。
- 子プロセス 1 は
printf
、0 から 100 までの偶数でなければなりません。 - 子プロセス 2 は
printf
、0 から 100 の間の奇数でなければなりません。
実行後にターミナルに表示されるのは次のとおりです。0 1 2 4..100
これどうやってするの?
このプログラムを試してみましたが、うまくいきません。最初の整数 0 しか得られません:
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
void handler1(int sig)
{
if(sig == SIGCONT)
{
raise(SIGCONT);
}
}
void handler2(int sig)
{
if(sig == SIGCONT)
{
raise(SIGCONT);
}
}
int main()
{
int i=-1;
if(fork()==0)
{
signal(SIGCONT,handler1);
while(1)
{
printf("%d\n",i+1);
pause();
kill(getpid()+1,SIGCONT);
}
}
if(fork()==0)
{
signal(SIGCONT,handler2);
while(1)
{
pause();
printf("%d\n",i+1);
kill(getpid()-1,SIGCONT);
}
}
}