|
|
1、在程序中一次性给下拉列表加载下拉值,显示成功:
GList *glist = NULL;
glist = g_list_append (glist, "AB");
glist = g_list_append (glist, "CD");
glist = g_list_append (glist, "EF");
gtk_combo_set_popdown_strings (GTK_COMBO (combo1), glist);
2、现在,想把所有Linux分区值做为下拉值:
1)在终端中利用awk命令: fdisk -l | awk '/Linux/ { print $1}'
显示结果为:/dev/hda7
/dev/hda8
显示结果正确。
2)可如何将上面两行记录动态性的加载到下拉列表中呢?请指点!
3、我曾试过的方法:
1)利用awk查询获得相应分区值,再存入数组中,将数组的值赋它:
system("fdisk -l | awk '/Linux/ {name[x++]=$1};END{for(i=0;i<NR;i++) glist = g_list_append (glist, name)}'");
结果提示:表达式不能解析。
2)利用buf值
//定义并将其值读入buf中:
FILE *fp;
char *cmdstring = "fdisk -l | awk '/Linux/ { print $1}'";
char buf[50];
if((fp = popen(cmdstring,"r")) == NULL)
exit(0);
while((fgets(buf,50,fp))!= NULL)
{
printf("%s",buf);
glist = g_list_append (glist, buf);
}
pclose(fp);
//加载到下拉列表中
glist = g_list_append (glist, buf);
结果:
下拉列表的选中行显示为:/dev/hda8(8的右上有个V,右下有个T;即V、T垂直排列在8后面);
点击下拉列表的向下箭头,可看到还有两行/dev/hda8(8后无字母,可选中显示时则有字母);
结果中无:/dev/hda7
问题如2:如何把所有Linux分区值做为下拉值,动态的加载到下拉列表中呢?谢谢! |
|