程序需要输入十个输入,这也可以同时发生,而其他进程则使用fork()进行。相反,它只是“输入输入:
输入输入:输入输入:输入输入:输入输入:输入输入:输入输入:输入输入:...”
int main(int argc, char * argv[])
{
int n1 = fork();
int n2 = fork();
if (n1 == 0 && n2 > 0 ){
getMarks();
}
else if (n1 > 0 && n2 == 0) {
printf("child2")
}
else if (n1 > 0 && n2 > 0){
printf("Parent");
}
else {printf("Child3");
}
}
void getMarks(){
printf("Enter ten marks: \n");
int i = 0;
int highestMark = 0;
for (i; i < 10; i++){
int num = 0;
printf("Enter Mark: ");
scanf("%d", &num);
if (num > highestMark) {
highestMark = num; }
}
printf("Highest Mark is : %d", highestMark);
}
预期结果将是其他孩子和父母将其打印到控制台中,同时也能够将输入信息输入getMarks()
答案 0 :(得分:0)
然后不要那样做。
您的第一个输入字符已发送到外壳。您输入的第二个字符已发送到程序。 rosinstall_generator sensor_msgs --rosdistro indigo --deps -wet-only --tar > indigo-sensor_msgs-wet.rosinstall
wstool init src indigo-sensor_msgs-wet.rosinstall
无法很好地从输入错误中恢复。
为避免此问题,请不要从父代不再活动的子进程中读取标准输入。安排您的代码,这样就永远不会发生。