Гость Опубликовано 30 апреля, 2004 Жалоба Поделиться Опубликовано 30 апреля, 2004 вот исходник проги "simple" Code: ---------------- #include void main() { char s[100]="123"; while (s[0]!='0') { gets(s); printf("simple.c: string readed:\"%s\"\n",s); } } ---------------- что делает - думаю, понятно, а вот исходник проблемной проги: Code: ---------------- #include #include #define PATH_MAX 1000 #define SIZE 100000 static char ptyfilename[PATH_MAX]; static int ptyslavefd=-1; int main() { int t; char msg; int pty; pid_t pid; printf("getpty..\n"); if ((pid=forkpty(&pty, ptyfilename, 0, 0))<0) { perror("error in getpty(void)"); return -1; } else if (pid>0) { char touch[30]="touch 123\n\n\n"; printf("parent:\n"); printf("pty file name:\"%s\"\n",ptyfilename); sleep(1); write(pty,touch,strlen(touch)); sleep(3); t = read(pty,msg,SIZE); msg[t]='\0'; printf("readed from terminal: [begin]%s[end]\n",msg); close(pty); } else { char s[100]; int res; printf("child: pty_fd=%d\n",pty); printf("execl...\n"); res=execl("simple","simple",NULL); // res=execl("/bin/bash","bash",NULL); printf("result:%d\n\n",res); perror("execl"); } } ---------------- вывод проги: Code: ---------------- getpty.. parent: pty file name:"/dev/pts/7" readed from terminal: [begin]child: pty_fd=0 execl...touch 123 simple.c: string readed:"touch 123" simple.c: string readed:"" simple.c: string readed:""[end] ---------------- теперь мы хотим вместо запуска simple поставить запуск bash, чтобы эти самые команды исполнялись, получается такой вывод: Code: ---------------- getpty.. parent: pty file name:"/dev/pts/7" readed from terminal: [begin]child: pty_fd=0 execl...touch 123 [end] ---------------- bash, судя по списку процессов, запускается, однако файлик "123" не создаётся вопрос: почему? и как это исправить? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.