网络程序设计实验
1、编程实现创建2个新进程,每个新进程负责打印出:
(1)“Hello!My father is+父进程号”
(2)“I am +子进程号”
(3)50以内的质数
2、编程实现创建3个新线程,每个新线程要求从主线程获得参数,并负责打印出:
(1)“Hello!My father is+父进程号”
(2)“I am +子进程号”
(3)判断参数是否为素数
代码如下
多进程
#include <stdio.h> #include <unistd.h> #include <math.h> int main(){ int t; for(t=0;t<=1;t++){ int ret=fork();//创建新进程 sleep(3) ; if(ret==0){ //输出父进程号,子进程号 printf("Hello! My father is %d, I am %d \n",getppid(),getpid()); //输出50以内质数 int i,n; for(i=2;i<=50;i++)以内 { for(n=2;n<=(int)sqrt(i);n++) if(i%n==0)break; if(n==(int)sqrt(i)+1) printf("%d ",i); } printf("\n"); exit(1); } if(ret==-1){ perror("fork error!"); } } for(t=0;t<=1;t++){wait(NULL); } return 0; }
多线程代码
#include <stdio.h> #include <unistd.h> #include <pthread.h> #include <stdlib.h> #include <signal.h> #include <sys/syscall.h> void *thread(void * arg) { int pid,n;pid=(int)arg; printf("hello!,my father is %d!I am %lu, ",getpid(),pthread_self()); //输出进程号,子进程号 //syscall(SYS_gettid) for(n=2;n<pid;n++) //判断参数是否为素数 { if(pid%n==0){break;} } if(n==pid){ printf("%d is shushu\n",pid);} else { printf("%d is not shushu\n",pid);} pthread_exit(0); //释放后资源 } int main() { pthread_t tid[3];int n=13;int i; for(i=0;i<3;i++) { int ret=pthread_create(&tid[i],NULL,thread,(void*) n);//创建线程 if(ret)printf("create thread failed! ret:%d\n",ret); } for(i=0;i<3;i++) usleep(1); for(i=0;i<3;i++) pthread_join(tid[i],NULL); //等待线程结束 return 0; }
多进程成功运行截图
多线程成功运行截图
我是一个新手小码渣,此次纯粹是为了练习使用,如有不周请原谅!