私は C の初心者で、フォークとパイプを使用して演習を行う必要があります。パイプ (キーボード: を使用stdin
) を埋める親プロセスと、パイプを読み取って印刷する必要がある子プロセスを作成する必要があります。画面。
しかし、このコードを実行すると、Java で既にプログラムした「セグメンテーション エラー コア ダンプ」が表示されます。これは「NullpoinerException」に相当します。2時間前からこの問題に取り組んでいるので、助けを求めていますありがとう
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int main()
{
char* p;
char* buffer;
int fd[2];
pid_t pid = fork();
pipe(fd);
//Cas du fils consommateur (Lire dans la pipe, et afficher le contenu a l'ecran )
if (pid == 0)
{
close(fd[1]);
int a;
do
{
a = read(fd[0], buffer, 512);
//printf("consomateur: %s", buffer);
} while (a != 0);
//Cas du père producteur (remplir la pipe par saisie au clavier)
}
else
{
close(fd[0]);
char *adString;
printf("Enter data \n");
do
{
adString = fgets(buffer, 20, stdin); // on recupere dans un buffer les donneés lues
write(fd[1], buffer, 512); // on met dans la pipe ce qu'on a mis dans le buffer
} while (strcmp(adString, "") != 0);
}
return 0;
}