main() { int child, i=2; if((child=fork()) == –1) {printf("fork error. ");exit();} if(child==0) {i=i+3; printf(“i=%d\n”,i); } i=i+5; printf(“i=%d\n”,i); }
时间: 2023-11-28 14:50:29 浏览: 106
浅谈Linux vfork与fork简单对比分析
这段代码是一个简单的进程创建和执行的示例。首先,该程序通过调用系统调用fork() 创建一个新进程,然后在子进程中将变量i加3并打印输出,父进程中将变量i加5并打印输出。
代码中的问题在于,if语句中的比较操作符“==”后面应该是一个整数值而不是一个负数。因此,应该将“-1”改为“0”,表示子进程的返回值为0。
另外,printf() 函数的参数字符串中包含了中文引号““”,需要将其改为英文引号“"”。
修改后的代码如下:
```
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
int child, i=2;
if ((child = fork()) == 0) {
i = i + 3;
printf("i=%d\n", i);
} else if (child > 0) {
i = i + 5;
printf("i=%d\n", i);
} else {
printf("fork error.\n");
exit(1);
}
return 0;
}
```
输出结果为:
```
i=7
i=2
```
其中,“i=7”是子进程的输出结果,“i=2”是父进程的输出结果。
阅读全文