Перейти к публикации
TheAndrey

RedServer Launcher V3 [Бета-тест]

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

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

 

Спасибо. Проверку можно было бы сделать так:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>

#define L 4096

int main(void)
{
	char bf[L];
	int i;
	int de_java[2];
	pid_t java;
	pipe(de_java);
	java = fork();
	if(java == -1)
	{
		fputs("\033[1;31mНе удалось запустить дочерний процесс.\033[0m\n", stderr);
		exit(1);
	}
	else if(java == 0)
	{
		fputs("\033[1;33mЗапуск Java.\033[0m\n", stdout);
		close(de_java[0]);
		dup2(de_java[1], 1);
		i = execlp("java", "java", "-version", 0);
	}
	else
		close(de_java[1]);
	if(i == -1)
	{
		fputs("\033[1;31mУ Вас не установлена Java!\033[0m\n", stderr);
		close(de_java[0]);
		exit(1);
	}
	wait(0);
	read(de_java[0], bf, L);
	fputs("\033[1;33mСообщение:\033[0m\n", stdout);
	fputs(bf, stdout);
	close(de_java[0]);
	return 0;
}

Но жава выводит сообщение непонятно куда, уж точно не в stdout, или она для проверки версии запускает аж целый дочерний процесс, сообщение которого я уже не могу перехватить.

 

c4006a1157.png

 

А так это нормально работает для других программ, например clang.

 

cce3f10df7.png

 


image.png.71f7c39369e5c1f3688fd965639ee865.png

30.10.2014 в 17:07, vadim189 сказал:

виндовс переучтанавливаеш а толку нет всеравно

24.06.2014 в 14:43, SergeJ15 сказал:

Андрей помнишь ты ставил перд модерацию сообщений eXend'a - в общем теперь я понял почему. Может вернуть ее, не думаю что нам нужен местный "троль"?

 

Поделиться сообщением


Ссылка на сообщение

@eXend,  есть такой велосипед.

Создаешь файл, например, test.sh:

java -version 2>&1 | head -n 1 | awk -F '"' '{print $2}'

И просто запускаешь не процесс java, а 

i = execlp("sh","sh","./test.sh");

И оно выведет тебе в сообщение версию java или ничего, если java нету. Вроде как-то так. 

 

 

Знал бы я нормально плюсы, может быть что и по лучше предложил) 

И использование fputs вместо традиционного ввода/вывода - это сильно) 

Изменено пользователем SirEdivn
  • Одобряю 1

Приватные сборки рулят!

Давайте вместе сделаем что-то интересное!, все тлен

Поделиться сообщением


Ссылка на сообщение
Гость BOOM96

Работает отлично ^-^

Поделиться сообщением


Ссылка на сообщение

@eXend, лучше сделай качалку под форточки, а то школьники не умеют Java обновлять...

Поделиться сообщением


Ссылка на сообщение

@eXend,  есть такой велосипед.

Создаешь файл, например, test.sh:

java -version 2>&1 | head -n 1 | awk -F '"' '{print $2}'

И просто запускаешь не процесс java, а 

i = execlp("sh","sh","./test.sh");

И оно выведет тебе в сообщение версию java или ничего, если java нету. Вроде как-то так.

 

Не... Файл не нужен. Можно сделать тогда еще проще:

#include <stdio.h>
#define L 4096

int main(void)
{
	char bf[L];
	FILE *de_java;
	de_java = popen("java -version 2>&1 | head -n 1 | awk -F '\"' '{print $2}'", "r");
	if(de_java)
	{
		fgets(bf, L, de_java);
		fputs("\033[1;33mСообщение:\033[0m\n", stdout);
		fputs(bf, stdout);
		pclose(de_java);
	}
	return 0;
}

Но спасибо за команду, а то я в этих bash вообще не шарю (:

Вот только, есть одна беда - openjdk, который выводит тоже самое, но при этом нихрена не работает.

s.png

 

И использование fputs вместо традиционного ввода/вывода - это сильно) 

А что ты подразумеваешь под "традиционным" вводом/выводом?


image.png.71f7c39369e5c1f3688fd965639ee865.png

30.10.2014 в 17:07, vadim189 сказал:

виндовс переучтанавливаеш а толку нет всеравно

24.06.2014 в 14:43, SergeJ15 сказал:

Андрей помнишь ты ставил перд модерацию сообщений eXend'a - в общем теперь я понял почему. Может вернуть ее, не думаю что нам нужен местный "троль"?

 

Поделиться сообщением


Ссылка на сообщение

@eXend, картинку у меня опять не показывает( 

И странно, у меня с openjdk пашет (пока только седьмую тестанул)

И в восьмой пашет. А пока кто-то упал, твой скрин я не увижу( 

 

 


А что ты подразумеваешь под "традиционным" вводом/выводом?

всякие printf, cout) 

Изменено пользователем SirEdivn

Приватные сборки рулят!

Давайте вместе сделаем что-то интересное!, все тлен

Поделиться сообщением


Ссылка на сообщение

@eXend, лучше сделай качалку под форточки, а то школьники не умеют Java обновлять...

Увы, но под кривые окошки есть только какая-то кривая реализация сокетов, которая отличается от стандартной UNIX.

Еще скорее всего в окошках не установлены по умолчанию такие программы как OpenSSL и Tar, без которых невозможно реализовать работу "качалки".

А еще качать и доустанавливать это ради того чтобы на окошках хоть что-то могло работать не стоит того... Окошки лесом идут крч.

@eXend, картинку у меня опять не показывает(

Какую именно? Кстати Joxi поломался ):

 

И странно, у меня с openjdk пашет (пока только седьмую тестанул)

А вот на всяких Fedora и openSUSE где он предустановлен не пашет.

 

всякие printf, cout) 

cout нет в Си, а printf выводит только в stdout, а мне и в stderr тоже выводить нужно, поэтому я просто пишу функцию 1 раз и множу её.


image.png.71f7c39369e5c1f3688fd965639ee865.png

30.10.2014 в 17:07, vadim189 сказал:

виндовс переучтанавливаеш а толку нет всеравно

24.06.2014 в 14:43, SergeJ15 сказал:

Андрей помнишь ты ставил перд модерацию сообщений eXend'a - в общем теперь я понял почему. Может вернуть ее, не думаю что нам нужен местный "троль"?

 

Поделиться сообщением


Ссылка на сообщение

 

 


Какую именно? Кстати Joxi поломался ):

Ту самую, где ты показываешь, как не работает openjdk) 


Приватные сборки рулят!

Давайте вместе сделаем что-то интересное!, все тлен

Поделиться сообщением


Ссылка на сообщение

Ту самую, где ты показываешь, как не работает openjdk) 

Но она через вк же... Думал там будет работать, подскажи лучше куда залить, чтоб ссылка держалась кучу времени?


image.png.71f7c39369e5c1f3688fd965639ee865.png

30.10.2014 в 17:07, vadim189 сказал:

виндовс переучтанавливаеш а толку нет всеравно

24.06.2014 в 14:43, SergeJ15 сказал:

Андрей помнишь ты ставил перд модерацию сообщений eXend'a - в общем теперь я понял почему. Может вернуть ее, не думаю что нам нужен местный "троль"?

 

Поделиться сообщением


Ссылка на сообщение

 

 


Но она через вк же... Думал там будет работать, подскажи лучше куда залить, чтоб ссылка держалась кучу времени?

Фиг его знает .. можно попробовать что-то в стиле http://imgur.com/


Приватные сборки рулят!

Давайте вместе сделаем что-то интересное!, все тлен

Поделиться сообщением


Ссылка на сообщение

@SirEdivn, вот все картинки в порядке их следования:

 

Kw2y55L.png

ff47L1M.png

HpZagiV.jpg

 


image.png.71f7c39369e5c1f3688fd965639ee865.png

30.10.2014 в 17:07, vadim189 сказал:

виндовс переучтанавливаеш а толку нет всеравно

24.06.2014 в 14:43, SergeJ15 сказал:

Андрей помнишь ты ставил перд модерацию сообщений eXend'a - в общем теперь я понял почему. Может вернуть ее, не думаю что нам нужен местный "троль"?

 

Поделиться сообщением


Ссылка на сообщение

@eXendмуда очень умные люди из openjdk почему-то не поставляют ее с javafx, хотя она вроде как туда интегрирована ...

Я могу предложить только модифицировать команду так:

java -version 2>&1 | head -n 1 | awk  '{print $3" " $1}'

Она теперь будет выводить что-то в стиле:

"1.8.0_40-internal" openjdk

В клинических случаях и 

"1.8.0_45" java
 

В нормальных.

 

Но опять же, может снова полезут какие-то баги( 

Изменено пользователем SirEdivn

Приватные сборки рулят!

Давайте вместе сделаем что-то интересное!, все тлен

Поделиться сообщением


Ссылка на сообщение

Извините за возможно тупой вопрос. У меня одного на новом лаунчере Одиночка лагает? Я в замешательстве!!!

  • Одобряю 2
  • Против 1

А давай съедим кусочек торта?

Поделиться сообщением


Ссылка на сообщение

Я тут разобрался почему жава выводит инф. о версии непонятно куда. Оказывается эти гениальные люди выводят инф. о версии в stderr, номер которого 2.

 

2d67d9a971.png

 

 


Крч, все что я могу, это сделать запрос о версии, и если там не окажется строки "java version \"1.8.", то загружать жаву отдельно, в ином случае запускать по стандартному пути.


image.png.71f7c39369e5c1f3688fd965639ee865.png

30.10.2014 в 17:07, vadim189 сказал:

виндовс переучтанавливаеш а толку нет всеравно

24.06.2014 в 14:43, SergeJ15 сказал:

Андрей помнишь ты ставил перд модерацию сообщений eXend'a - в общем теперь я понял почему. Может вернуть ее, не думаю что нам нужен местный "троль"?

 

Поделиться сообщением


Ссылка на сообщение

 

 


Крч, все что я могу, это сделать запрос о версии, и если там не окажется строки "java version \"1.8.", то загружать жаву отдельно, в ином случае запускать по стандартному пути.

Ну или как-то так)


Приватные сборки рулят!

Давайте вместе сделаем что-то интересное!, все тлен

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...