我想知道您是否可以在需要连续变量输出( 0.50 )的情况下更改waitpid()的参数。但是,考虑到waitpid()只接受整数,当我尝试打印时,它会给我0。不知道如何解决这个问题,或者这是否是问题所在。
计算看起来(1+(2 * 3)/(2 * 7)) = 0.5
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(){
int a = 1, b = 2, c = 3, d = 2, e = 7;
int a_plus_pid, b_times_c_pid, d_times_e_pid;
int a_plus, b_times_c, d_times_e;
a_plus_pid = fork();
if(a_plus_pid)
{
b_times_c_pid = fork();
if(b_times_c_pid)
{
d_times_e_pid = fork();
if(d_times_e_pid)
{
waitpid(a_plus_pid, &a_plus, 0);
waitpid(b_times_c_pid, &b_times_c, 0);
waitpid(d_times_e_pid, &d_times_e, 0);
//Supposed to print 0.50
printf("%d" , ((a + (b_times_c))) / d_times_e);
}
else
{
exit(d*e);
}
}
else
{
exit(b*c);
}
}
else
{
exit(a);
}
}发布于 2017-09-20 07:13:22
pid_t waitpid(pid_t pid, int *status, int options);的第三个参数是int,因此不能在那里传递浮点值。
事实上,把这样的价值传递到那里是没有意义的。你需要更加努力地学习,重新考虑你的方法。
https://stackoverflow.com/questions/46315402
复制相似问题