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 Создается впечатление, что код программы вы поместили на форум не копи-пастом, а ручным набором Вы правы наберал вручную, так как Линукс стоит на виртуалке и выхода в инет нет Большое спасибо! уже разобрался Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.