在带有gtk接口的c程序中,我有复制文件的指令,
execl("/bin/cp","cp","-i",path,dest,NULL);/*copy*/
我希望确认cp -i消息从shell重定向到我的gtk msgbox甚至答案(是/否)由方框按钮
这是我试过的gtk msgBox:
GtkWidget* dialog;
dialog = gtk_dialog_new_with_buttons(
"Rennomer fichier existant",
GTK_WINDOW(window),
GTK_DIALOG_MODAL,
GTK_STOCK_OK,GTK_RESPONSE_OK,
GTK_STOCK_CANCEL,GTK_RESPONSE_CANCEL,
NULL);
g_signal_connect(G_OBJECT(pButton), "clicked", G_CALLBACK(lancer_boite);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), pEntry, TRUE, FALSE, 0);
答案 0 :(得分:1)
这当然可行,但它会变得很尴尬。
基本上你应该考虑使用glib's subprocess-spawning API来运行shell命令,然后你必须解析输出并在对话框中显示它。当用户单击对话框中的按钮时,您需要将其映射回文本响应并将其发送到子流程。
使用(再次)glib's GIO API实现复制更容易。
"脱离"在C中并不常见,因为它很难整合。
如果您必须在没有其他库支持的情况下执行此操作,请查看popen()
以自行创建一对管道,并在调用exec()
之前将其设置为孩子的stdin / stdout。