Перейти к содержанию

Передача стринга через pipe


Рекомендуемые сообщения

Здравствуйте! Пытаюсь передать стринг между двумя дочерними процессами. ниже листинги программ. В чем проблема? на линуксе недавно программирую.

pipe.c

#include<sys/types.h>

#include<unistd.h>

#include<stdio.h>

#include<string.h>

int main( int argc, char *argv[], char *envp)

{

int fd[2], result, result1;

char resstring[14];

if (pipe<0)

{

printf("Can't creat pipe\n");

exit(-1);

}

result=fork();

if (result<0)

{

printf("Can't fork child1\n");

exit(-1);

}

else if (result==0)

{

result1=fork();

if (results1<0)

{

printf("Can't fork child2\n");

exit(-1);

}

else if (result==0)

{

execle("root/child2","root/child2",0,envp);

}

else

{

printf("This is child1\n");

close(fd[1]);

size=read(fd[0],resstring,14);

if (size!=14)

{

printf("Can't read all string\n");

exit(-1);

}

close(fd[0]);

printf("%s",resstring);

}

}

else

{

printf("This is parent\n");

exit(-1);

}

return 0;

}

child2.c

#include<sys/types.h>

#include<unistd.h>

#include<stdio.h>

#include<string.h>

int main( i)

{

int fd[2];

size_t size;

char resstring[14]={"HELLO, WORLD!"};

close(fd[0);

size=write(fd[1],resstring,14);

if (size!=14)

{

printf("Can't write all string\n");

exit(-1);

}

close(fd[1]);

return 0;

}

При запуске выдает сообщения:

This is child2

Can't write string

This is child1

This is parent

Can't read all string

Ссылка на комментарий
Поделиться на другие сайты

Создается впечатление, что код программы вы поместили на форум не копи-пастом, а ручным набором, причем, вспешке. Помимо исправленных вами синтаксических ошибок сразу бросается в глаза ещё несколько неурядиц.

1. в программе pipe не определена переменная size

2. Определена result1, а используется results1.

3. Уже не синтаксис, а логика. В программе child2 массив fd[2] используется как массив файловых дескрипторов, хотя никто туда дескрипторы не помещал.

Если ожидаете помощи, то приводите текст именно тех программ, которые выдают ошибки. При этом посторайтесь максимально локализовать проблему. С длинным запутанным кодом вряд ли кому захочется разбираться.

Ссылка на комментарий
Поделиться на другие сайты

gogi писал(а) Wed, 12 August 2009 17:20

Создается впечатление, что код программы вы поместили на форум не копи-пастом, а ручным набором

Вы правы наберал вручную, так как Линукс стоит на виртуалке и выхода в инет нет

Большое спасибо! уже разобрался

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...