我必須編寫一個簡單的C應用程序來創建一個進程和一個子進程(fork()),我必須執行一個操作。父母初始化值和子計算。我寫這個:父母與子女之間的溝通
#include <stdlib.h>
#include <signal.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
typedef struct {
int op1;
char op;
int op2;
} Operation;
Operation *varOP;
void finalResult()
{
float result = 0;
if(varOP->op == '+') result = (varOP->op1 + varOP->op2);
if(varOP->op == '-') result = (varOP->op1 - varOP->op2);
if(varOP->op == '*') result = (varOP->op1 * varOP->op2);
if(varOP->op == '+') result = (varOP->op1/varOP->op2)
printf("%f",result);
}
int main() {
int p;
varOP = (Operation *)malloc(sizeof(Operation));
p = fork();
if(p == 0) // If child
{
signal(SIGUSR1, finalResult);
pause();
}
if(p > 0) // If parent
{
varOP->op = '+';
varOP->op1 = 2;
varOP->op2 = 3;
kill(p, SIGUSR1);
wait(NULL);
}
return 0;
}
但我的孩子從來沒有被稱爲。我的代碼有問題嗎? 感謝您的幫助!
一時間,這聽起來像這個問題應該已經對http://answers.modernfather.com/: ) – Thorarin 2010-05-20 12:49:17
Ahah不是真的一樣的問題;) – Pierre 2010-05-20 12:56:20