- странность с pipe(), VLazarenko, 19:05 , 22-Апр-05 (1)
- странность с pipe(), VLazarenko, 12:01 , 26-Апр-05 (7)
- странность с pipe(), Maxim Kuznetsov, 12:49 , 26-Апр-05 (8)
- странность с pipe(), programmator, 18:16 , 26-Апр-05 (12)
- Немогу разобраться с pipe и fork(), Mimik, 10:35 , 05-Сен-08 (13)
- Немогу разобраться с pipe и fork(), phpcoder, 11:04 , 05-Сен-08 (14)
> pid = execlp("/local/mms-v20/lib/linux_v9/OMStip","OMStip","T75","-done","wan0",0); > read(pid,buffer,255); Если мне не изменяет память, то ф-ции из семейства exec управление не возвращают, иными словами ваш read() даже не выполнится. Вам, видимо, нужно использовать popen().
- Немогу разобраться с pipe и fork(), Mimik, 13:37 , 05-Сен-08 (15)
- Немогу разобраться с pipe и fork(), phpcoder, 13:43 , 05-Сен-08 (16)
>FILE *pid = popen("/local/mms-v20/lib/linux_v9/OMStip T75 -done wan0","r"); > read(pid,buffer,255); >получается надыть так? Не совсем так, потому что popen() возвращает FILE *, а read() ждёт int в качестве файлового дескриптора. Так что вам, по-видимому, нужно fread() использовать. P.S. Почитайте маны)
- Немогу разобраться с pipe и fork(), Mimik, 13:48 , 05-Сен-08 (17)
- Немогу разобраться с pipe и fork(), Mimik, 13:53 , 05-Сен-08 (18)
- Немогу разобраться с pipe и fork(), Mimik, 14:24 , 05-Сен-08 (19)
- Немогу разобраться с pipe и fork(), phpcoder, 14:50 , 05-Сен-08 (20)
Где хедеры stdio.h. и stdlib.h ?>int main() В Си если ф-ция не принимает параметров, лучше указывать void, т.е. в вашем случае правильнее будет int main(void) >{ >char buf[256] = "null"; >FILE *oms = popen("patch/OMStip T75 -done wan0","r"); > >if(!oms) > { > printf("Error read file\n"); Сообщение об ошибках всё же лучше направлять в stderr. Ну и оно должно быть более читабельным, чем в вашем случае. > return EXIT_FAILURE; > } > else > { > printf("Read run\n"); > fread(buf,1,256,oms); У вас размер буфера 256, как вы собрались туда прочитать 256 символов? А как же нулевой символ? Вы так можете получить ошибку off-by-one и выход за границы массива. > printf("%s",buf); > fclose(oms); fclose() используется для закрытия файловых дескрипторов, открытых с помощью fopen(). В вашем случае нужно pclose() > } > Здесь должен быть оператор return EXIT_SUCCESS; >} > >но приложение отрабатывет со второго раза о_О, и после исполнения теряется фокус >у консоли >в нее ничего нельзя ввести О_О как это побороть? У меня ваш пример (после некоторых правок) отрабатывает с первого раза и никакой фокус не теряется.
|