Вот программа:
#include <gtk/gtk.h>
#include "2.h"
#include <glib.h>
// writing a text file
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
string GetStdoutFromCommand(string cmd) {
  string data;
  FILE * stream;
  const int max_buffer = 256;
  char buffer[max_buffer];
  cmd.append(" 2>&1");
  stream = popen(cmd.c_str(), "r");
  if (stream) {
    while (!feof(stream))
      if (fgets(buffer, max_buffer, stream) != NULL) data.append(buffer);
    pclose(stream);
  }
  return data;
}
static void
  app_activate (GApplication *app, gpointer user_data) {
  GtkWidget *win;
  GtkWidget *box;
  GtkWidget *label;
  GtkWidget *grid;
  GtkWidget *textview = gtk_text_view_new();
  // app is new
 win = gtk_application_window_new (GTK_APPLICATION (app));
  gtk_window_set_title (GTK_WINDOW (win), "win");
   gtk_window_set_default_size (GTK_WINDOW (win), 700, 300);
// setup box1
  box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
  gtk_box_set_homogeneous (GTK_BOX (box), TRUE);
  gtk_widget_set_halign (box, GTK_ALIGN_START);
  gtk_widget_set_valign (box, GTK_ALIGN_START);
  gtk_window_set_child (GTK_WINDOW (win), box);
// setup labels
	label = gtk_label_new(GetStdoutFromCommand("netstat -tuwapn").c_str());
	//GetStdoutFromCommand("netstat -tuwapn").c_str()
 
// grid
	grid = gtk_grid_new ();
	gtk_grid_set_row_spacing (GTK_GRID (grid), 1);
    gtk_window_set_child (GTK_WINDOW (win), grid);
	gtk_grid_attach (GTK_GRID (grid), label,200, 3, 50, 50);
	  
// show window
   gtk_widget_show (win);
}
 int main (int argc, char **argv) {
  GtkApplication *app;
 int stat;
 app = gtk_application_new ("gtk.org", G_APPLICATION_FLAGS_NONE);
 g_signal_connect (app, "activate", G_CALLBACK (app_activate), NULL);
 stat =g_application_run (G_APPLICATION (app), argc, argv);
  g_object_unref (app);
  return stat;
}
https://ibb.co/5Fb7Thd - это монитор интернет-соединений.
Компилируется эта программа, следующей командой:
g++ -o test test.cpp $(pkg-config --cflags --libs gtk4)
Но он статический. Как на c++ linux делается динамическое обновление этого widget’a label (текстовое поле), чтобы текст в нем менялся, каждые 5 секунд? через сигналы как на qt? через дополнительной демон на c++ в linux по cron’у? Как лучше сделать динамическое обновление label (widget) на gtk4 linux?



