因此,我正在进入并发编程,但出于某种原因,我甚至无法使基本工作。我有一个名为fork.c的文件,它包含一个main方法。在这种方法中,主要我分叉两次,分成子进程1和2.如何在C中同时运行两个子进程?
在子1中,我打印字符'A'50次。
在孩子2中,我打印字符'B'50次。
当我运行我的代码时,我得到输出AAAAA ... AAAABBBBBB .... BBBBBB。但从来没有像ABABABABABABAB ....事实上,有时我甚至会得到BBBBB .... BBBBAAAA .... AAAAA。
那么,为什么我会遇到这种行为?也许我完全错了。
#include <stdlib.h>
#include <stdio.h>
void my_char(char n) {
write(1, &n, 1);
}
int main() {
int status;
pid_t child1, child2;
if (!(child1 = fork())) {
// first childi
int a;
for (a = 0; a < 50; a++) {
my_char('A');
}
exit(0);
} else if (!(child2 = fork())) {
// second child
int a;
for (a = 0; a < 50; a++) {
my_char('B');
}
exit(0);
} else {
// parent
wait(&child1);
wait(&child2);
my_char('\n');
}
return 0;
}
'fork'可能不是大多数人的想法当他们说“并发编程”... –
这是为什么?对不起,这很新。 –
'fork'创建一个新的单线程进程。 “并发”通常指单个进程内的多线程。 –