LINUX.ORG.RU

Сообщения xpqpx

 

Помогите с PIPE

Привет всем!

Если создать анонимное соединение PIPE (c помощью pipe + Fork + execl…):

Это псевдокод (просто для информации) , так что не пинайте пожалуйста:

pipe(&iReadPipe);
pipe(&iWritePipe);
pid = fork()
If (pid == 0) {
	close(iWritePipe[1]);
	close(iReadPipe[0]);
	dup2(iWritePipe[0], STDIN_FILENO);
	close(iWritePipe(0));
	dup2(iReadPipe[1], STDOUT_FILENO);
	close(iReadPipe[1]);
	execl(szCmd, szCmd, NULL);
}	
if pid > 0 {
	pIn = fdopen(iReadPipe[0], "r");
	pOut = fdopen(iWritePipe[1], "w"); 
	setvbuf(pIn, NULL, _IONBF, 0);
	setvbuf(pOut, NULL, _IONBF, 0);
}

то текстовые сообщения можно отправлять и принимать между процессами.

Однако если дочерний процесс ждет ожидание клавиши в терминале , то из родительского процесса невозможно производить ввод\вывод по трубам. Попытка вводить что-то в терминал бесполезна , похоже блокируется любое действие по трубам.

Мне нужно:

дочерний процесс ждет ожидания какой-то клавиши или вводимого текста с клавиатуры. Родительский процесс должен послать нажатия клавиш дочернему процессу и дочерний мог принять.

Именованные PIPE мне не подходят , поскольку приложение с которым будет устанавливаться связь является сторонним.

Подскажите как правильно сделать.

 , ,

xpqpx
()

libWebKitGtk (не загружается файл HTML)

Привет всем!

Кто нибудь знает почему браузер не загружает HTML файл с локального диска , содержащий:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>test</title>
</head>
<body 
<P><A href="page.html">this page</A></P>
</body>
</html>

СИ код простейший:

static void destroyWindowCb(GtkWidget* widget, GtkWidget* window);
static gboolean closeWebViewCb(WebKitWebView* webView, GtkWidget* window);

int main(int argc, char* argv[])
{
    gtk_init(&argc, &argv);
    GtkWidget *main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size(GTK_WINDOW(main_window), 800, 600);
    WebKitWebView *webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
    gtk_container_add(GTK_CONTAINER(main_window), GTK_WIDGET(webView));
    g_signal_connect(main_window, "destroy", G_CALLBACK(destroyWindowCb), NULL);
    g_signal_connect(webView, "close", G_CALLBACK(closeWebViewCb), main_window);
    webkit_web_view_load_uri(webView, "file:///home/user/test.html");
    gtk_widget_grab_focus(GTK_WIDGET(webView));
    gtk_widget_show_all(main_window);
    gtk_main();
    return 0;
}

static void destroyWindowCb(GtkWidget* widget, GtkWidget* window)
{
    gtk_main_quit();
}

static gboolean closeWebViewCb(WebKitWebView* webView, GtkWidget* window)
{
    gtk_widget_destroy(window);
    return TRUE;
}

Если у HTML файла убрать тег DOCTYPE , и содержимое тега HTML очистить (то есть убрать xmlns) , то страница грузится.

Похоже я что-то упускаю. Подскажите , как настроить webkit , что-бы он начал отображать такого рода страницы?

 , ,

xpqpx
()

RSS подписка на новые темы