fork 문제 인거 같은데..

soohyk의 이미지

리눅스 공부한지 얼마안되는 초보입니다.
이번에 fork()함수를 이용해서 자식프로세서를 만들어 프로그램을 만들려고
합니다.
처음이라 잘 안되네요..^^

nt main(void)
{
 int i,j;
 int data[100];
 int result = 0;
 int pid;
 int status;

 pid = fork();

 /* parent process */
 if(pid>0){
  for(i=0;i<5;i++){
   data[i]=rand()%100;
   printf("data[%d]=%d\n",i,data[i]);
  }
  wait(&status);
  printf("sum of the generated number : %7d\n",result);
  
  exit(1);
 }
 
 /* child process */
 if(pid=0){
  sleep(2);
  for(j=0;j<5;j++){
   result += data[i];
  } 
 }
 
 /* error check */
 else{
  printf("fork error.\n");
 }
 return 0;
}

이게 코드인데요..
출력 결과가 아래와 같네요..
data[0]=80
fork error.
data[1]=32
data[2]=35
data[3]=75
data[4]=85
sum of generated number : 0

이런식으로 나오네요..
검색해서 fork()에 대한 글을 많이 읽어보았는데....
아직 잘 이해가 안갑니다.
프로세스를 만드는것 까진 하겠는데.. 종료가 잘 안되는 것 같습니다.

관심가지고 읽어주셔서 감사합니당^^.

dreampia의 이미지

 /* parent process */ 
 if(pid>0){ 
 } 
  
 /* child process */ 
 if(pid=0){ 
 } 
  
 /* error check */ 
 else{ 
 } 

(pid = 0) 이 아니라 if (pid == 0) 이겠죠??

>/dev/null 2>&1

soohyk의 이미지

이런 실수를..^^;;;
아무튼 답변 감사합니당.

인생은 한번뿐~!!