나는 fork()와 vfork()를 모두 시도하고 vfork로 fork 및 seg 오류로 float pt excep를 얻습니다. vfork()를 사용할 때 뚜렷한 이유가 없기 때문에 자식을 종료하지만 부모를 입력하지 않고 seg faults를 입력하지 않습니다. 내가 fork()를 사용할 때 부모에게 들어가지만 나에게 float pt excep를 준다. 어떤 아이디어?기본 fork() 프로그램은 seg fault 또는 부동 pt 예외를 반환합니다.
#include <iostream>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int sum = 0;
int i = 0;
pid_t pID;
int main()
{
pID = vfork();
if (pID > 0)
{
std::cout<< "b4 NULL"<< i<< "__"<< sum << std::endl;
wait(NULL);
std::cout<< "after NULL"<< i<< "__"<< sum << std::endl;
int avg = sum/i;
std::cout<<avg;
}
else if (pID == 0)
{
int J = 0;
std::cout<<sum<<"__"<<i<<std::endl;
i=0;
sum=0;
std::cout<<"enter a num:";
std::cin>>J;
while(J != -1)
{
sum += J;
std::cout<<"enter a num:";
std::cin>>J;
i++;
}
//int avg = sum/i;
//std::cout<<avg;
std::cout<<"exit child"<< i << "__" << sum << "__" << sum/i << std::endl;
//return(sum);
}
else
{
std::cerr << "Failed to fork" << std::endl;
return 1;
}
return 0;
}
당신이 보여준 코드는 부모 기능입니다. 그것만이 (sum)을 수정하고 avg를 표시하기로되어있다. 아이는 (pID == 0). – user2782246
@ user2782246. 그게 변화라고 생각하니? –
아이 프로세스를 언급했지만 부모를 보여 주었기 때문에 나는 확신 할 수 없었습니다. – user2782246