ubuntu18.04文件和设置打不开

问题简介:ubuntu18.04文件和设置打不开。

为什么有这个文章:1:就想sqlite3按方向键可以显示以前命令而不显示乱码。
2:百度搜到的方法:在装sqlite3之前先:apt install libreadline-dev
3:确实可以但是用没多久ubuntu图形界面的文件和设置打不开。尝试过重装系统,各种骚操作,均失败。对于强迫症患者难以接受。

简述解决问题过程。
第一个问题sqlite3方向键可以调出历史命令,已经装过sqlite3再去装libreadline-dev肯定想先卸载sqlite3,但是卸载完后运行sqlite3还是能用。后来搜到一个命令:apt -purge remove sqlite3
具体没试过,

第二个问题:最头疼的问题用了几天发现虚拟机桌面图标的文件和设置打不开。

然后就网上搜,发现很惊人的事实,搜到的答案就跟学习通老师发布讨论题,后面的答案一样,能找到不一样的基本没有。我想表达的是百度好多解决问题的答案有导向意义但参考意义不大。
搜到的答案基本全是ps nautilus ,然后kill 对应pid。最后对这答案都免疫了,(插句题外话,解决问题的过程其实是一个了解新知识的过程,而且更难忘。)最后我试了一下在终端输入nautilus命令出现了如下:
在这里插入图片描述

根据这个描述,我大概能确定就是sqlite3惹的祸。
然后就在百度上搜这个问题的描述,结果唯一唯一唯一找到和我同样问题的是一个很正规的网站,(又想吐槽百度…)www.askubuntu.com
那个提问者的描述大概是,他试着卸载清除重装nautilus,sqlite3,gnome但是都没成功。(和我太像了)
下面解决问题的答案我第一眼看过去就是一个重装sqlite3的命令就没注意,后来实在打不开文件设置很头疼就又去搜结果又回到了这个网站。。。由于是英文的我静下心来慢慢看发现是装其他版本的sqlite3
我就下载了最新版安装包。
先说一下傻瓜式安装步骤:
1:tar xvzf …
2:./confogure
3:make
4:make install

我后来重装一个新系统里面的工具基本都没有,例如gcc什么的所以这次在make 的时候遇到问题比如libtool,autoconf等工具没有导致make失败,(老师给的是配置好的ubuntu,就比如vim可以鼠标定位,gcc,openssh-server等必要的工具都装好了,感觉我宛如巨婴……)这些问题也不是很大装完新版本后运行nautilus发现可以打开文件,桌面化图标也可以打开!!!
两个班60个人一样的18.04,一样的sqlite3版本,竟然就只有我有这个问题。
好在问题解决舒服了很多。

最后插写题外话:
linuxc编程小白。
最近来研究内存和文件编程。
1:内存和变量存储位置
促使我好好研究内存的原因:为啥突然冒出一个malloc,申请来的动态内存有什么用,怎么用,为什么free(p),那我int a;怎么就不free(&a)呢,在各种找资源后大概了解了,(也不算了解,更加深入了点吧,毕竟以前老师也讲过这个话题,自己不懂怪谁)以下是我写的测试代码:

#include<stdio.h>
int c = 0;

int add(int a,int b)
{
	printf("形参地址:%x %x\n",&a,&b);
	printf("函数名地址:%x\n",&add);
	return a+b;
}
int main()
{
	static int aa = 0;
	static int bb = 0;
	static int cc;
	static int dd;	
	int a = 1 ;
	int b = 2;
	int *p = &a;
	int *pp = &b;
	int *ppp = (int *)malloc(sizeof(int) * 100);
	char *str = "hello";
	char str1[] = "hi";
	printf("初始化静态局部变量地址:%x  %x\n",&aa,&bb);//初始化静态局部变量地址
	printf("未初始化静态局部变量地址:%x  %x\n",&cc,&dd);//未初始化静态局部变量地址
	printf("局部变量地址,指针地址:%x %x  %x %x\n",p,pp,&p,&pp);//局部变量地址,指针地址
	printf("全局变量地址:%x\n",&c);//全局变量地址
	printf("&ppp and ppp:%x %x\n",&ppp,ppp);//指向动态分配内存的指针地址(栈中),指针值(指向堆)
	printf("&str and str文字常量区:%x %x\n",&str,str);
	printf("&str1 and str1:%x %x\n",&str1,str1);
	add(1,2);
	return 0;
}

2:结构体内存对齐
其实上课也讲了,但是有些没讲明白,自己有研究了一下
自己设计代码各种测试,总结一些结论:
1:单一结构体
1总的规则按最长的数据类型来算,数组不算,基本上就是指针了64位占8字节
2 字符,字符串紧跟在前面那个类型后面
3struct

char;
short;
int;
int *
}假设int指针为8字节

struct

char;
short;
char;

struct{
char;
char;
short;

那这些结构体存储格式如下
在这里插入图片描述

2:结构体嵌套
总的规则:把结构体展开看最长的数据类型
1:不管小的套大的,还是大的套小的,结构体都要另外起一行存。老规矩看图,自认为比较经典的例子(至少对我自己有用)
在这里插入图片描述

3:有个问题拿出来讨论
都写过学生信息管理系统吧,默认写过
题目:假如我程序编好了功能正常运行,我创建了一串链表,并且增删改查一顿乱操作,最后保存到文件中去。此时,在文件中的链表的next是不是存了这一次malloc在堆上申请的空间的地址,
那下一次我加载文件这些next地址是不是没用了?
自己理解:每运行一次出现并且保存文件退出,这些next指针地址内容都要变。

最后进程,线程,socket冲冲冲!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值