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

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

Опубликовано

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

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 эмодзи.

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

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

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

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