/ bin / cat:错误的文件描述符

时间:2020-09-19 15:04:42

标签: c

我对pipe(),fork()函数和/ bin还是很陌生。我想通过第一个孩子到第二个孩子的管道传递一个值,以后将用它来更改该值。但是,我认为,如果我在第二个孩子中做line而只做line++,那就可以了。但是,line将成为共享值。因此,我使用/bin/cat来正确调出标准输出,但似乎无法正常工作。

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<string.h>
#include<sys/wait.h>
#include<stdio.h>
#include<unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#define READ_END 0
#define WRITE_END 1
 
int fd1[2];
char line[100];
int main() 
{ 
    int line = 1;
    char *args[] = {"/bin/cat",NULL};
    //child 1 process 
    if(fork() == 0)
    {   
        close(fd1[READ_END]);
        dup2(fd1[WRITE_END], WRITE_END);
        printf("Num 1: %d\n", line);
        close(fd1[WRITE_END]);
        exit(0); 
    }
    // child 2 process 
    if (fork() == 0)
    {
        close(fd1[WRITE_END]); 
        line++;
        dup2(fd1[READ_END], READ_END);
        printf("Num 2: %d\n", line);
        close(fd1[READ_END]);
        execv("/bin/cat",args);
        exit(0);

    } 
    else if(fork() != 0);
    // Write input string and close writing end of first pipe.
    close(fd1[READ_END]);
    close(fd1[WRITE_END]);
    exit(0); 
    return 0;
}

我的输出是:

Num 1: 1
Num 2: 2
/bin/cat: -: Bad file descriptor
/bin/cat: closing standard input: Bad file descriptor

0 个答案:

没有答案
相关问题