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

проблема с псевдотерминалом (linux)


Гость

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

вот исходник проги "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" не создаётся

вопрос: почему? и как это исправить?

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

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

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

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

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