message,100);printf("read from pipe :%s\n",message);}/*写操作*/voidwrite_to_pipe(intfd){charmessage[1000];peintf("Input your message!\n");scanf("%s",message);write(fd,message,strlen(message
{printf("I am the child process, PID = %d, PPID = %d", getpid(), getppid());close(pipe_fd[1]);sleep(DELAY_TIME *3);if((real_read=read(pipe_fd[0],buf, MAX_DATA_LEN)) >0) {printf("Child receive %d bytes from pipe: '%s'.\n", real_read, buf); }close(pipe_fd[0]);...
写入进程执行:./fifo_write_test abc Write into pipe: 'abc'. 读取进程输出:Read from pipe: 'abc'.
extern int pipe (int __pipedes[2]); 此函数的参数是一个整型数组,如果执行成功,pipe 将存储两个整型文件描述符于__pipedes[0]和__pipedes[1]中,他们分别指向管道的两端。如果系统调用失败,则返回 -1。 读无名管道,该函数的声明如下: extern ssize_t read (int __fd, void *__buf, size_t __nby...
void read_from_pipe(int file) { FILE *stream; /*流式文件结构体*/ int c; stream = fdopen(file, "r"); while ((c = fgetc(stream)) != EOF) putchar(c); fclose(stream); } /*Write some random text to the pipe*/ void write_to_pipe(int file) ...
close(pipe_fd[1]); sleep(DELAY_TIME*3); /* 子进程读取管道内容 */ if((real_read=read(pipe_fd[0],buf,MAX_DATA_LEN))>0) { printf("%d bytes read from the pipe is '%s'\n",real_read,buf); } close(pipe_fd[0]);/* 关闭子进程读描述符 */ ...
[root@localhost pipe]# gcc -g pipe.c -o pipe 运行代码,输出结果如下: [root@localhost pipe]# ./pipe parent read 11 bytes data: hello world 二、管道的实现 每个进程的用户空间都是独立的,但内核空间却是共用的。所以,进程间通信必须由内核提供服务。前面介绍了 管道(pipe) 的使用,接下来将会介绍管...
printf("%d bytes read from the pipe is '%s'\n",real_read,buf); close(pipe_fd[0]); //关闭子进程读描述符 exit(0); }else if(pid > 0){ close(pipe_fd[0]); //父进程关闭读描述符 if((real_write = write(pipe_fd[1],data,strlen(data))) != -1) ...
Close other end first. */close(mypipe[1]);read_from_pipe(mypipe[0]);returnEXIT_SUCCESS;}/*如果出现错误,fork返回一个负值*/elseif(pid<(pid_t)0){/* The fork failed. */fprintf(stderr,"Fork failed.\n");returnEXIT_FAILURE;}/*在父进程中,fork返回新创建子进程的进程ID*/else{/* This ...
致,使用write()函数写入数据,使用read()读出数据。 #include<unistd.h> int pipe(int filedes[2]); 返回值:成功,返回0,否则返回-1。参数数组包含pipe使用的两个文件的描述符。fd[0]:读管道,fd[1]:写管道。 必须在fork()之前调用pipe(),否则子进程不会继承文件描述符。两个进程不共享祖先进程,就不能使...