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;
}