【发布时间】:2011-02-21 20:31:03
【问题描述】:
我必须编写一个简单的 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;
}
但是我的孩子从来没有被叫过。我的代码有问题吗? 感谢您的帮助!
【问题讨论】:
-
有那么一刻,听起来这个问题应该是在answers.modernfather.com :)
-
啊哈不是同样的问题;)
标签: c process operating-system fork parent-child