多进程测试

1. 编写程序 rxx(xx为你学号后两位), rxx -o 生成并打印一个奇数随机数,rxx -e 生成并打印一个偶数随机数。提交代码和运行结果截图。

#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <string.h>
int main(int argc,char *argv[])
{
    char *o = "-o";
    char *e = "-e";
    int a;
    
    printf("\n");
	//随机种子
	srand((unsigned int)time(NULL));
	for(int i = 0;i < 10 ;i ++)
	{
        if(strcmp(argv[1], o)==0)
        {
            a=rand()%101;
            if(a%2!=0)
            {
                printf("jishu is %d\n",a);
                break;
            }
            //printf("%d ",rand()%101);//生成0~100之间
        }
		
        else if(strcmp(argv[1], e)==0)
        {
            a=rand()%101;
            if(a%2==0)
            {
                printf("oushu is %d\n",a);
                break;
            }
            //printf("%d ",rand()%101);//生成0~100之间
        }
        else{
            printf("none!");
        }
		//printf("%d ",rand()%101 - 50);//生成-50~50之间
	}	
    
	printf("\n");
	return 0;
}

2. 编写一个多进程程序,父进程通过调用exec和rxx 打印奇数随机数,同时打印自己PID,子进程通过调用exec和rxx 打印奇数随机数,同时打印PPID和PID,提交代码和运行结果截图。

#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
    char *o = "-o";
    char *e = "-e";
    int a;
    int fork_rv;

    printf("\n");
    //随机种子
    srand((unsigned int)time(NULL));
    printf("Before: my pid is %d\n", getpid());

    fork_rv = fork();
    
    for (int i = 0; i < 10; i++)
    {
        if (fork_rv == 0)
        {
           
            if (strcmp(argv[1], o) == 0)
            {
                 
                a = rand() % 101;
                if (a % 2 != 0)
                {
                    printf("I am the child.  my pid=%d\n", getpid());
                    printf("jishu is %d\n", a);
                    break;
                }
            }
            else
            {
                    printf("child none!");
                    exit(0);
                }
                
                // printf("%d ",rand()%101);//生成0~100之间
            
        }

        else if (fork_rv != 0 && fork_rv != -1)
        {
            
            if (strcmp(argv[1], e) == 0)
            {

                a = rand() % 101;
                if (a % 2 == 0)
                {
                    printf("I am the parents.  my pid=%d\n", getpid());
                    printf("oushu is %d\n", a);
                    break;
                }
                // printf("%d ",rand()%101);//生成0~100之间
            }
            else
            {
                printf("parents none!");
                 exit(0);
            }
            // printf("%d ",rand()%101 - 50);//生成-50~50之间
        }
        else{
            perror("fork");
        }	/* check for error	*/
		
    }

    printf("\n");
    return 0;
}

posted @ 2022-11-10 08:51  acacacac  阅读(41)  评论(0编辑  收藏  举报