Day 23 网络的配置, qt, getpwuid, getgrgid, symlink, remove, rename, link, unlink, access, umask, chmod


gedit 1.c (相当于window下的记事本) 可以使用快捷键, ctrl+shift+c ctrl+shift+v


查找命令时如果记不清楚,可以 man -k xxx (可用于模糊查找,如 man -k get|less)


linux 下网络的简单配置,
1 点击vm的虚拟机选择–》设置–》网络适配器–》 net。
2. 在ubuntu 终端上
sudo vim /etc/network/interfaces
3.保留以下内容
auto eth0
iface eth0 inet dhcp
4. sudo reboot //重新启动linux
5.ping www.baidu.com //ping 一下,看看是否可以连接到百度的服务器。



linux 下qt 的简单配置,
1.点击软件中心软件
选择菜单栏的edit–》downloadform–>other
–>>china–>>mirrors.163.com–>choose server
2.
在终端上 ,软件源的更新
sudo apt-get update

sudo apt-get install build-essential
cd Qt5.5.1 -> Tools -> QtCreator -> bin -> vim ~/.bashrc
vim .bashrc
在最后加入
export PATH=$PATH:/home/linux/Qt5.5.1/Tools/QtCreator/bin
xrdb -load /home/linux/Xresource
4.sudo reboot

5.在终端上 qtcreator

6 快捷方式
cd Desktop
ln -s /home/linux/Qt5.5.1/Tools/QtCreator/bin/qtcreator qt



1.getpwuid 函数,可以获取passwd下的uid 号, struct passwd *getpwuid(uid_t uid); //可以得到用户信息。

struct passwd {
char pw_name; / username */
char pw_passwd; / user password /
uid_t pw_uid; /
user ID /
gid_t pw_gid; /
group ID */
char pw_gecos; / user information */
char pw_dir; / home directory */
char pw_shell; / shell program */
};

#include <stdio.h>
#include <sys/types.h>
#include <pwd.h>


int main(int argc, const char *argv[])
{
	uid_t uid = 1000;
	struct passwd *pw = getpwuid(uid);
	printf("%s %s \n", pw->pw_name, pw->pw_passwd);
	return 0;
}

2.getgrgid() 函数可以获得组文件下的用户信息。 struct group *getgrgid(gid_t gid);
struct group {
char gr_name; / group name */
char gr_passwd; / group password /
gid_t gr_gid; /
group ID */
char *gr_mem; / group members */
};

#include <stdio.h>
#include <sys/types.h>
#include <grp.h>


int main(int argc, const char *argv[])
{

gid_t  grd = 1000;
struct group * gr = getgrgid(grd);
printf("%s %s \n", gr->gr_name, gr->gr_passwd);
return 0;
}

3.symlink() 函数可以建立软链接, (ln -s xxx xxx) int symlink(const char *oldpath, const char *newpath);
//软链接相当于快捷方式。
#include <stdio.h>
#include <unistd.h>

int main(int argc, const char *argv[])
{
	int ret = symlink("./bbb", "./softlink");
	if(-1 == ret)
	{
		printf("symlink error\n");
	}
	else
	{
		printf("symlink success\n");
	}

	return 0;
}

4.remove() 函数可以删除文件, int remove(const char *pathname);

#include <stdio.h>
#include <unistd.h>

int main(int argc, const char *argv[])
{
	int ret = remove("./softlink");
	if(-1 == ret)
	{
		printf("remove error\n");
	}
	else
	{
		printf("remove success\n");
	}

	return 0;
}

5.rename()函数,可以重命名, int rename(const char *oldpath, const char *newpath);
//当路径不确定时可以使用pwd 来查看当前路径。
#include <stdio.h>
#include <unistd.h>

int main(int argc, const char *argv[])
{
	int ret = rename("bbb", "bbbb");
	if(-1 == ret)
	{
		printf("rename error\n");
	}
	else
	{
		printf("rename success\n");
	}

	return 0;
}

6.link() (ln xxx xxx)函数为创建硬链接函数, int link(const char *oldpath, const char *newpath);
//硬链接是将相同的名字指向同一磁盘中的具体文件。删除一个名字不会将源文件删除的。
#include <stdio.h>
#include <unistd.h>

int main(int argc, const char *argv[])
{
	int ret = link("bbbb", "cccc");
	if(-1 == ret)
	{
		printf("link error\n");
	}
	else
	{
		printf("link success\n");
	}

	return 0;
}

7.unlink() 函数为取消硬链接, int unlink(const char *pathname);

#include <stdio.h>
#include <unistd.h>
int main(int argc, const char *argv[])
{
	int ret = unlink("eeee");
	if(-1 == ret)
	{
		printf("unlink error\n");
	}
	else
	{
	
		printf("unlink success\n");
	}
	return 0;
}

8.access() 函数为检查当前用户权限的函数。 int access(const char *pathname, int mode); R_OK, W_OK, and X_OK. F_OK

#include <stdio.h>
#include <unistd.h>
int main(int argc, const char *argv[])
{
	int ret = access("bbbb", X_OK);
	if(-1 == ret)
	{
		printf("X_ NOT _OK\n");
	}
	else
	{
	
	printf("X_OK\n");
}
return 0;
}

9.umask(); 函数改权限 mode_t umask(mode_t mask);


10.chmod() 函数可以改权限,当使用chmod 函数时,值不再与umask 值相减。

#include <stdio.h>
#include <unistd.h>
int main(int argc, const char *argv[])
{
	int ret = chmod("bbbb", 0666);
	if(-1 == ret)
	{
		printf("chmodNOT _OK\n");
	}
	else
	{
	
	printf("chmod_OK\n");
}
return 0;
}

11.truncate()函数,可以清空及改变文件大小, 用它写一个大文件很是方便。 int truncate(const char *path, off_t length);
如果 off_t length ;原来为100,现在为80, 则后20会丢掉。
如果 off_t length ;原来为100,现在为120,则后后面会添加20个’\0’.


12.错误判断函数:
(1)perror(); void perror(const char *s);

#include <stdio.h>
int main(int argc, const char *argv[])
{
	FILE *fp = fopen("/etc/passwd", "w");
	if(NULL == fp)
	{
		perror("fopen");
		return 1;
	}

	return 0;
}

(2)strerror(); char *strerror(int errnum);
//向函数中传入相应的 errnum 则会打印出对应的错误类型。在perror中也会调用到strerror函数。

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
	int i = 0;
	for(i = 0; i < 265; ++i)
	{
	
	printf("%d %s\n", i, strerror(i));

	}
	return 0;
}

(3)error(); void error(int status, int errnum, const char *format, …);

#include <stdio.h>
#include <string.h>
#include <error.h>
#include <errno.h>
int main(int argc, const char *argv[])
{
	char *filename="/etc/passwd";
	FILE* fp = fopen(filename,"w");
	if(NULL == fp)
	{
		//printf("fopen error\n");
		error(1,errno,"这是程序中的第一个fopen %s line:%d file:%s"
				,filename,__LINE__,__FILE__);
		printf("看见就没退出\n");
		return 1;

	}
	return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值