rootlocalhost 1c# gcc -o 1 1c1c 在函数‘main’中1c521 错误:expected expression before ‘=’ token whilep1=fork = = -1; 创建子进程p1 ^1c69 错误:expected expression before ‘=’ token if p1= =0
这段代码中出现了多个错误,都是由于等号(=)和等于(==)混淆导致的。正确的代码应该是:
#include <stdio.h>
#include <unistd.h>
int main() {
pid_t p1, p2;
while((p1=fork()) == -1); /*创建子进程p1*/
if (p1 == 0) {
putchar('b');
fflush(stdout);
while((p2=fork()) == -1); /*创建子进程p2*/
if (p2 == 0) {
putchar('e');
fflush(stdout);
} else {
waitpid(p2, NULL, 0); /*等待子进程p2结束*/
putchar('d');
fflush(stdout);
}
} else {
waitpid(p1, NULL, 0); /*等待子进程p1结束*/
putchar('a');
fflush(stdout);
}
return 0;
}
修改的主要内容如下:
- 将等号(=)改为等于(==)。
- 在子进程中加上 fflush(stdout) 语句,强制刷新输出缓冲区,以保证输出顺序正确。
- 在父进程中加上 waitpid(p1, NULL, 0) 语句,等待子进程p1结束。
- 在子进程p1中再创建一个子进程p2,并分别处理p2的情况。
- 在父进程和子进程p1中分别加上输出语句
原文地址: http://www.cveoy.top/t/topic/djok 著作权归作者所有。请勿转载和采集!