【问题标题】:C: How to pass integer from parent to child one at a time?C:如何一次将整数从父母传递给孩子?
【发布时间】:2014-03-04 06:13:07
【问题描述】:

您好,我正在尝试将 0-9 之间的整数一次传递给我的子进程。在子进程中,我将简单地打印整数。这甚至可能吗?这是我目前的草稿,它只打印第一个 0。

if (pid >0){
    /*abusive parents*/
    if((close(fd[0])) == -1){
        perror("close:");}
    int k;
    for (k=0;k<10;k++){
    write(fd[1], &k, sizeof(int));
    }
    close(fd[1]);



}
else if(pid ==0){
    /*stupid child*/

    int k;
    if((close(fd[1])) == -1){
        perror("close:");} 
   read(fd[0],&k,sizeof(int));
   printf("k in child is %d\n",k);
   close(fd[0]);

}

【问题讨论】:

  • 好吧,我想通了,我需要在子进程中循环打印语句,然后再关闭它!

标签: c linux process fork pipe


【解决方案1】:

编辑:以下作品

#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  int fd[2];
  pipe(fd);        
  int pid = fork();
  if (pid >0){
      /*abusive parents*/
      if((close(fd[0])) == -1){
          perror("close:");}
      int k;
      for (k=0;k<10;k++){
         write(fd[1], &k, sizeof(int));
      }
      close(fd[1]);
  }
  else if(pid ==0){
    /*stupid child*/

     int i,k;
     if((close(fd[1])) == -1){
          perror("close:");} 
     for (i=0;i<10;i++) {
        read(fd[0],&k,sizeof(int));
        printf("k in child is %d\n",k);
     }
     close(fd[0]);
  }
  return 0;
}

输出:

k in child is 0
k in child is 1
k in child is 2
k in child is 3
k in child is 4
k in child is 5
k in child is 6
k in child is 7
k in child is 8
k in child is 9

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-31
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多