LINUX.ORG.RU

(Shell скрипты и C) Вывод результата в --dialog msgbox


0

1

Подскажите пожалуйста почему не получается отобразить результат работы в msgbox

dialog --title "Результат работы потоков:" --msgbox "$(./threads z 5 x 20)" 100 100

код самого файла threads.с
#include<pthread.h>
#include<sys/types.h>
#include<stdio.h>
#include<string.h>
struct char_print_parms
{
  char character;
  int count;
};
void *char_print(void *parametrs)
{
  struct char_print_parms *p=(struct char_print_parms *) parametrs;
  int i;
  for(i=0;i<p->count;i++)
    fputc(p->character,stderr);
  return NULL;
}
int main(int argc,char * argv[])
{
  pthread_t thread1_id,thread2_id;
  struct char_print_parms thread1_args,thread2_args;
  thread1_args.character=argv[1];
  thread1_args.count=atoi(argv[2]);
  pthread_create(&thread1_id,NULL,&char_print,&thread1_args);
  thread2_args.character=argv[3];
  thread2_args.count=atoi(argv[4]);
  pthread_create(&thread2_id,NULL,&char_print,&thread2_args);
  pthread_join(thread1_id,NULL);
  pthread_join(thread2_id,NULL);
  return 0;
}

Если просто запускать ./threads z 5 x 20 вроде отрабатывает, а в msgbox вывести не получается, подскажите что не правильно делаю.

Выводишь символы в поток ошибок

fputc(p->character,stderr);
Либо выводи в поток вывода, либо перенаправляй
dialog --title "Результат работы потоков:" --msgbox "$(./threads z 5 x 20 2>&1)" 100 100

Кстати программа у тебя выводит то что ожидается? Ты так смело присваиваешь символу строку

thread1_args.character=argv[1];

gman
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.