fork linux 低权限,Linux fork的头次使用

1.需要循环创建50个进程作为某种客户端连接服务器进行操作,由于fork理解不够深,如下操作

#include

#include

#include

#include

int num1 = 0;

int num2 = 0;

int add(int pid)

{

int i = 0;

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

{

printf("My Process id is=%d, sum=%d\n", pid, num1+num2);

num1++;

num2++;

sleep(2);

}

printf("the process over id=%d\n", pid);

return 0;

}

int main()

{

pid_t fpid;

int count =0;

int i = 0;

printf("input the fork count:\n");

scanf("%d", &count);

for(i=0; i< count; i++)

{

if(fpid< 0)

{

printf("fork error\n");

exit(-1);

}else if(fpid == 0)

{

printf("I am the child process, my Process id is=%d, fpid=%d\n", getpid(), fpid);

add(getpid());

}else

{

printf("I am the parent process, my process id is=%d, fpid=%d\n", getpid(),fpid);

}

}

return 0;

}

输入50后,产生了无数进程,总之没有计算赶紧将电脑重新启动了。

2.fork创建进程

子进程是父进程的复制品。例如,子进程获得

父进程数据空间、堆和栈的复制品。注意,这是子进程所拥有的拷贝。父、子进程并不共享这

些存储空间部分。如果正文段是只读的,则父、子进程共享正文段。

f o r k有两种用法:

(1) 一个父进程希望复制自己,使父、子进程同时执行不同的代码段。这在网络服务进程

中是常见的——父进程等待委托者的服务请求。当这种请求到达时,父进程调用 f o r k,使子进

程处理此请求。父进程则继续等待下一个服务请求。

(2) 一个进程要执行一个不同的程序。这对 s h e l l是常见的情况。在这种情况下,子进程在

从f o r k返回后立即调用e x e c

waitpid用法参考https://blog.csdn.net/u011068702/article/details/54409273

正确创建50个进程

#include

#include

#include

#include

int num1 = 0;

int num2 = 0;

int g_pid[50] = {0};

int g_num = 0;

int add(int pid)

{

int i = 0;

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

{

printf("My Process id is=%d, sum=%d\n", pid, num1+num2);

num1++;

num2++;

sleep(2);

}

printf("the process over id=%d\n", pid);

return 0;

}

int worker(int i)

{

int pid = fork();

switch(pid)

{

case 0:

g_pid[i] = pid;

printf("I am the child process, my Process id is=%d, fpid=%d\n", getpid(), pid);

add(getpid());

exit(0);;

case -1:

printf("[Worker]: Fork failed!\n");

exit(0);

default:

break;

}

}

int main()

{

pid_t fpid;

int count =0;

int i = 0;

printf("input the fork count:\n");

scanf("%d", &count);

g_num = count;

for(i=0; i< count; i++)

{

worker(i);

/fpid = fork();

if(fpid< 0)

{

printf("fork error\n");

exit(-1);

}else if(fpid > 0)

{

printf(" I am the parent process, my process id is=%d, fpid=%d\n", getpid(),fpid);

continue;

}else

{

printf("I am the child process, my Process id is=%d, fpid=%d\n", getpid(), fpid);

add(getpid());

}/

/if(fpid< 0)

{

printf("fork error\n");

exit(-1);

}else if(fpid == 0)

{

printf("I am the child process, my Process id is=%d, fpid=%d\n", getpid(), fpid);

add(getpid());

}else

{

printf("I am the parent process, my process id is=%d, fpid=%d\n", getpid(),fpid);

}/

}

for(i=0; i

{

waitpid(g_pid[i],NULL, 0);

printf("wait the sun process\n");

}

printf("father process over\n");

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值