C Fork程序请审阅
编写一个C程序,将名为done的环境变量设置为0 然后,程序将要求用户在循环中输入5个数字,并将这些数字存储在5个int元素的数组中C Fork程序请审阅,c,C,编写一个C程序,将名为done的环境变量设置为0 然后,程序将要求用户在循环中输入5个数字,并将这些数字存储在5个int元素的数组中 然后程序将创建一个克隆进程(使用fork() 克隆应运行名为sum()的函数,该函数计算数组中所有数字的总和 之后,克隆将把done环境变量设置为1。它还将创建第二个名为result的环境变量,并将其设置为sum()函数的返回值 父进程等待done变量,直到它设置为1 如果为1,则父级将在屏幕上打印:元素之和为:结果 请注意,result是名为result的环境变
这意味着由您决定参数的类型、数量以及返回值的类型 我不知道为什么我的程序不起作用
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int sum(int a[], int size) {
int index, result = 0;
for (index = 0; index < size; index++) {
result+=a[index];
return result;
}
}
int main() {
int i, array[5], result;
long pid;
char string[20];
for (i = 0; i < 5; i++) {
scanf("%d", &array[i]);
if (i == 4) {
}
}
setenv("done", "0", 1);
pid = fork();
if (pid == 0) {
result = sum(array,5);
sprintf(string, "%d", result);
setenv("result", string, 1);
setenv("done","1",1);
}
else {
while (strcmp(getenv("done"), "0") == 0) {
}
result = atoi(getenv("result"));
printf("The sum of elements is %d\n", result);
}
return 0;
}
#包括
#包括
#包括
#包括
整数和(整数a[],整数大小){
int索引,结果=0;
对于(索引=0;索引
这不是您想要的答案,但通过环境变量进行双向通信几乎是不可能的,因为正如注释中所指出的,子进程不能影响其父进程环境
我建议你看看:
- 共享内存
- 烟斗
- 插座
- RPC