0
我想知道您是否可以更改參數 waitpid()
此刻我需要連續變量輸出(0.50
)作爲打印內容。但是,考慮到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- pages/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;這也可能會導致問題。嵌套的ifs與其他鏈的嵌套感覺笨拙。你最好分叉和測試fork(孩子)的返回值,然後做一些其他的動作來分岔下一個孩子。 –
是的,這是我的問題,我需要一個浮點返回。所以即時通訊不知道會調用waitpid工作後投射? – Dreeww