Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用fork创建子打印a-z&;c+中的父进程A-Z+;_C++_Process_Parallel Processing_Operating System_Fork - Fatal编程技术网

C++ 使用fork创建子打印a-z&;c+中的父进程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) { //

我正在尝试使用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)
{
    // 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
为您提供了对并行处理的更多控制。