gpt4 book ai didi

我可以在不使用文件流的情况下编写这段代码吗

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:07 25 4
gpt4 key购买 nike

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

/* Read characters from the pipe and echo them to stdout. */

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)
{
FILE *stream;
stream = fdopen (file, "w");
fprintf (stream, "Hello from Parent!\n");
fclose (stream);
}

int main (void)
{
int pid;
int mypipe[2];

/* Create the pipe. */
if (pipe (mypipe))
{
printf("Pipe failed.\n");
return EXIT_FAILURE;
}

/* Create the child process. */
pid = fork ();
if (pid == 0)
{
/* This is the child process.
Close other end first. */
close (mypipe[1]);
read_from_pipe (mypipe[0]);
return EXIT_SUCCESS;
}
else if (pid < 0)
{
/* The fork failed. */
printf ("Fork failed.\n");
return EXIT_FAILURE;
}
else
{
/* This is the parent process.
Close other end first. */
close (mypipe[0]);
write_to_pipe (mypipe[1]);
return EXIT_SUCCESS;
}
}

我想编写简单的程序来完成这个任务:

  • 父进程使用 pipe() 系统调用创建管道。
  • 父进程创建子进程。
  • 父进程向子进程发送消息“Hello from Parent”。
  • 子进程将消息打印到屏幕。

此代码创建文件流。我不明白为什么。没有文件流我能做这件事吗..?

最佳答案

这个答案可能对 future 的 Google 员工有帮助。

我想这就是您要找的。这是我写的:

#include <stdio.h>
#include <unistd.h>

int main(){
int p, f;
int rw_setup[2];
char message[20];
p = pipe(rw_setup);
if(p < 0){
printf("An error occured. Could not create the pipe.");
_exit(1);
}
f = fork();
if(f > 0){
write(rw_setup[1], "Hello from Parent", 18);
}
else if(f == 0){
read(rw_setup[0],message,18);
printf("%s %d\n", message, r_return);
}
else{
printf("Could not create the child process");
}
return 0;

}

我们使用 fork() 创建子进程。 fork() 返回:

  • <0 创建子(新)进程失败

  • =0 子进程

  • >0 即子进程到父进程的进程 ID。当 >0 父进程将执行。

pipe() 用于将信息从一个进程传递到另一个进程。因此,pipe() 是单向的,对于进程之间的双向通信,可以设置两个管道,每个方向一个。

您可以阅读更多details在这里。

关于我可以在不使用文件流的情况下编写这段代码吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26315183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com