代码是:
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
void main()
{
pid_t childpid;
int status,i;
if(childpid = fork() == -1){
perror("fork err");
exit(1);
}
if(childpid == 0){
printf("child process, pid number is %d and returned value from fork is %d\n",getpid(),childpid);
}
else{
printf("father process, pid number is %d and returned value from fork is %d\n",getpid(),childpid);
}
}
答案 0 :(得分:0)
问题来自你的第一个条件。运算符==
的优先级高于赋值运算符=
。因此,在childpid
变量中,您的布尔结果为fork() == -1
。添加括号以解决问题:
if((childpid = fork()) == -1){
perror("fork err");
exit(1);
}
为了更具可读性,请在条件之前进行分配:
childpid = fork();
if(childpid == -1){
perror("fork err");
exit(1);
}
答案 1 :(得分:0)
在这一行
if(childpid = fork() == -1)
您已从条件fork() == -1
而非pid