C++ 使用fork创建子打印a-z&;c+中的父进程A-Z+;
我正在尝试使用fork()创建一个子进程,它将以小写字母打印出从a到z的字母,而父进程将以大写字母打印出字母表C++ 使用fork创建子打印a-z&;c+中的父进程A-Z+;,c++,process,parallel-processing,operating-system,fork,C++,Process,Parallel Processing,Operating System,Fork,我正在尝试使用fork()创建一个子进程,它将以小写字母打印出从a到z的字母,而父进程将以大写字母打印出字母表 #include <unistd.h> #include <iostream> using namespace std; int main() { cout << "Program Begins" << endl; char letter; pid_t pid = fork(); if (pid == 0) { //
#include <unistd.h>
#include <iostream>
using namespace std;
int main()
{
cout << "Program Begins" << endl;
char letter;
pid_t pid = fork();
if (pid == 0)
{
// child process
for (letter = 'a'; letter <= 'z'; letter++)
{
cout<< "child process: " << letter << endl;
}
}
else if (pid > 0)
{
// parent process
for (letter = 'A'; letter <= 'Z'; letter++)
{
cout << "parent process: " << letter << endl;
}
}
else
{
// fork failed
cout << "fork failed" << endl;
return 1;
}
cout << "End of Program\n" << endl;
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
cout多线程/多进程程序本质上是不确定的。操作系统决定每个任务何时处于活动状态太长时间,以及何时是安排新任务的时间,因此,特别是由于您的程序非常短,很有可能在父任务有机会执行之前,子任务将完成执行ced再次激活,反之亦然
如果您希望程序交错两个进程,可以在循环中添加一个sleep语句来降低速度,并强制CPU更定期地翻转
如果您实际上希望程序在两者之间精确、均匀地交替,那么您需要使用互斥体或删除多线程。使用fork()创建一个子进程,父进程和子进程应打印编号。从10到1,父进程应打印编号的阶乘。您不能保证操作系统将如何安排线程或进程。请尝试在每个循环迭代中短暂休眠一段时间。您的问题是什么?可能有一个进程完成了此任务s在被操作系统抢占之前缩短循环,以便启动另一个循环。如果使用更长的循环或在循环迭代之间添加延迟,您最终会看到这两个循环并行运行。std::thread
为您提供了对并行处理的更多控制。