Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
6年前关闭。
我的程序从用户范围开始。然后它创建3个进程并一个接一个地执行
但我希望所有进程同时运行。
然后,所有4个进程并行运行。但是,根据
您应该打印三个“ pid = XX”,然后延迟大约5秒钟,然后“完成睡眠XX”。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
6年前关闭。
我的程序从用户范围开始。然后它创建3个进程并一个接一个地执行
但我希望所有进程同时运行。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/wait.h>
void function();
cin>>range;
cin>>process;
int main() {
int range = 1000;
int i;
int pid;
int pid1;
for(i = 0; i < ; i++) {
pid1 = fork();
}
if(pid1==0) {
pid = getpid();
printf("The process id is: %d\n", pid);
function(range);
}
else {
wait(0);
}
return 0;
}
最佳答案
首先,就像其他人提到的那样,您不是在分叉3个进程,而是在分叉8个进程。
for (i = 0; i < 3; ++i) {
pid1 = fork();
if (pid1 == 0) break;
}
然后,所有4个进程并行运行。但是,根据
function
的功能,可能很难看到它-它可能完成得太快。所以试试这个:if (pid1 == 0) {
printf("pid=%d\n", getpid());
sleep(5);
printf("done sleep %d\n", getpid());
} else {
wait(0);
}
您应该打印三个“ pid = XX”,然后延迟大约5秒钟,然后“完成睡眠XX”。