我真的是GTK的新手,一直在努力想象它。我現在已經是GTK,孩子的父母,共享內存和
Widgets *w; // shared mem
struct mystruct *user; // shared mem
....
pid = fork();
.....
if(pid == 0) {
while(1){
get_events(user);
parse_events(user);
// can I write to Widgets *w and the changes happen in the
// parent process that is running the gtkmainloop
write_to_textview("child", w);
}
} else {
......
write_to_textview("parent", w);
gtk_widget_show_all(window);
gtk_main();
}
用戶的父母,孩子和其他人「之間的共享結構這種結構包含,我想在一個GtkTextView父進程,儘快爲他們有空來預覽數據 我不知道該怎麼做。這是不可能使用這樣的事情在父
while(1) {
is_available_data(user);
}
,將檢查數據是否可用,然後將數據寫入到GtkTextView。由於gtk主循環,這是不可能的。在這個senario中必須有另外一種方式,所以我可以在更新或者可用的時候立即監視用戶 - >事件(char *),並且應該再次打印(用戶是shm,事件也是shm),但是怎麼能我告訴gtk循環。 GtkThreads?
是否有一種使用shm從子進程寫入小部件的簡單方法(小部件在父進程中運行的位置)?
我確定有其他方法比我想要做的更容易。
編輯1:
我可以看到數據產生/變更/從子進程在struct並將看到它與在父進程(SHM)沒有問題。我想要做的就是更新TextView,只要數據發生變化,我相信我需要一個while循環,必須檢查和更新,但由於gtkmainloop阻塞,所以無法進行。我需要創意或方法來做到這一點。我花了一段時間試圖找出gtk相關的電話來幫助我,但不能。
放鬆感謝您的重播。通過共享內存我的意思是我使用XSI共享內存段設置指針指向可以從父/子或任何其他進程(sys/shm.h)訪問的內存。是的,我相信現在我唯一能夠訪問數據並影響變化和其他事情的方法是使用線程或試圖在共享內存級別構建我的gtk/window/widgets。我相信線程在這一點上是更簡單的方法。 「你會喜歡你,但我的聲望低於15,再次感謝!」 – x11