oleg_sml Опубликовано 11 августа, 2009 Жалоба Опубликовано 11 августа, 2009 Здравствуйте! Пытаюсь передать стринг между двумя дочерними процессами. ниже листинги программ. В чем проблема? на линуксе недавно программирую. 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 Цитата
oleg_sml Опубликовано 12 августа, 2009 Автор Жалоба Опубликовано 12 августа, 2009 Извиняюсь при подачи листинга программы допустил ошибки, в первой программе стоит if(pipe(fd<0) и во второй close(fd[0]). Цитата
gogi Опубликовано 12 августа, 2009 Жалоба Опубликовано 12 августа, 2009 Создается впечатление, что код программы вы поместили на форум не копи-пастом, а ручным набором, причем, вспешке. Помимо исправленных вами синтаксических ошибок сразу бросается в глаза ещё несколько неурядиц. 1. в программе pipe не определена переменная size 2. Определена result1, а используется results1. 3. Уже не синтаксис, а логика. В программе child2 массив fd[2] используется как массив файловых дескрипторов, хотя никто туда дескрипторы не помещал. Если ожидаете помощи, то приводите текст именно тех программ, которые выдают ошибки. При этом посторайтесь максимально локализовать проблему. С длинным запутанным кодом вряд ли кому захочется разбираться. Цитата
oleg_sml Опубликовано 13 августа, 2009 Автор Жалоба Опубликовано 13 августа, 2009 gogi писал(а) Wed, 12 August 2009 17:20 Создается впечатление, что код программы вы поместили на форум не копи-пастом, а ручным набором Вы правы наберал вручную, так как Линукс стоит на виртуалке и выхода в инет нет Большое спасибо! уже разобрался Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.