あなたは私が印刷されているものであることを連続可変出力(0.50
)を必要と現時点で waitpid()
のパラメータを変更することができる場合、私は思ったんだけど。しかし、waitpid()
は、私が試してみると整数を受け入れるので、それは私に0を与えます。これを修正する方法や、これが問題であったとしても。)(waitpidののパラメータを変更する
計算は、(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);
}
}
http://advancedlinuxprogramming.com/を読んで、[waitpid(2)](http://man7.org/linux/man-pages/man2/waitpid.2.htmlを含む) 、[fork(2)](http://man7.org/linux/man-pages/man2/fork.2.html)、[pipe(7)](http://man7.org/linux/man-ページ/ man7/pipe.7.html)、[execve(2)](http://man7.org/linux/man-pages/man2/waitpid.2.html)、[popen(3)](http: //man7.org/linux/man-pages/man3/popen.3.html)..)。あなたの質問には深遠な誤解があり、あまり意味がありません。 [オペレーティングシステム](http://pages.cs.wisc.edu/~remzi/OSTEP/)も参照してください –
すべての算術演算は整数演算です。そこから浮動小数点値を得ることは決してありません。終了コードは255に制限されています。それも問題を引き起こす可能性があります。 elseの連鎖を持つ入れ子のifは不器用です。 fork(子)からの戻り値0をフォークしてテストし、次の子をフォークする何らかのアクションを実行する方が良いでしょう。 –
ええ、私の問題は浮動小数点の戻り値が必要です。だから、私はwaitpidの仕事を呼び出した後にキャストするのだろうか? – Dreeww