linux写入c语言命令 linux系统怎么写c语言

怎么用linux写c语言Linux正在成为开发人员的编程天堂linux写入c语言命令,成为开源和免费操作系统 。Turbo C编译器已经是一种编译程序的旧方法,所以让程序员转向Linux以获得新的编程环境 。在本文中,我们将解释如何编写,编译和运行一个简单的C程序 。这将成为您迁移到可以在Linux上编写和执行的更复杂和有用的C程序的基础 。
我们在Ubuntu 18.04 LTS系统上运行了本文中提到的步骤和命令 。
我们将使用Linux命令行工具Terminal,以编译一个简单的C程序 。要打开终端,您可以使用Ubuntu Dash或CtrlAltT快捷方式 。
第1步linux写入c语言命令:安装build-essential软件包
为了编译和执行C程序,您需要在系统上安装必要的软件包 。在Linux终端中以root用户身份输入以下命令:
sudo apt-get install build-essential
系统会要求您输入root用户密码; 安装过程将在此之后开始 。请确保您已连接到互联网 。
第2步:编写一个简单的C程序
安装必要的软件包之后,让我们编写一个简单的C程序 。
打开Ubuntu的图形文本编辑器,将以下示例程序写入或复制到其中:
#include
int main()
{
printf("nA sample C program ");
return 0;
}
然后使用.c扩展名保存文件 。在这个例子中,我将我的C程序命名为linuxidc.c
或者,您可以通过gedit中的终端编写C程序,如下所示:
gedit linuxidc.c
这将创建一个.c文件,您可以在其中编写和保存程序 。
第3步:使用gcc编译C程序
【linux写入c语言命令 linux系统怎么写c语言】在终端中,输入以下命令以生成您编写的程序的可执行版本:
句法:
$ gcc [programName].c -o programName
示例:
$ gcc linuxidc.c -o linuxidc
linux终端下如何进行C语言编译1、首先在linux下判断是否安装gcc编译器 , 直接执行:gcc -v,判断是否安装gcc 。
2、然后需要在代码框内写一个简单的C源程序 。
3、在程序中使用了C语言中的数学开方函数,sqrt(),所以需要引入math.h头文件 。
4、写完源程序之后 , 我们对其进行编译,如果使用通常的编译语句,【gcc math.c -o math】进行编译,会出现错误;大概的意思就是不认识sqrt这个东西 。
5、所以需要使用正确的命令:【gcc math.c -lm -o math】;这样才能编译正确 。
怎么用C语言实现linux的命令命令是查询当前登录的每个用户,它的输出包括用户名、终端类型、登录日期及远程主机 , 在Linux系统中输入who命令输出如下:
我们先man一下who,在帮助文档里可以看到,who命令是读取/var/run/utmp文件来得到以上信息的 。
我们再man一下utmp,知道utmp这个文件 , 是二进制文件 , 里面保存的是结构体数组 , 这些数组是struct utmp结构体的 。
struct utmp {
shortut_type;
pid_tut_pid;
charut_line[UT_LINESIZE];
charut_id[4];
charut_user[UT_NAMESIZE];
charut_host[UT_HOSTSIZE];
struct {
int32_t tv_sec;
int32_t tv_usec;
} ut_tv;
/***等等***/
};
要实现who只需要把utmp文件的所有结构体扫描过一遍,把需要的信息显示出来就可以了 , 我们需要的信息有ut_user、ut_line、ut_tv、ut_host 。
老师给的初始代码:who1.c运行结果如下:
需要注意的是utmp中所保存的时间是以秒和微妙来计算的,所以我们需要把这个时间转换为我们能看懂的时间,利用命令man -k time | grep 3搜索C语言中和时间相关的函数:
经过搜索发现了一个ctime()函数,似乎可以满足我们的需求,于是对代码中关于时间的printf进行修改:
printf("%s",ctime(utbufp-ut_time));
编译运行发现出来的结果虽然已经转换成了我们能看懂的时间格式 , 但是很明显这个时间是错的:
搜索一下ut_time这个宏,发现它被定义为int32_t类型:
但是ctime()函数中要求参数的类型是time_t类型,所以重新定义一下类型 , 编译运行之后,发现时间已经改成了正确的,但是发现()中的内容被换行了,猜想ctime()函数的返回值可能自动在最后补了一个字符\n:
一开始想通过\r\b来实现“退行” , 但实践后发现并不可?。詈罂悸堑街苯有薷淖址凶詈笠桓鲎址猏0,让其字符串结束,使输出达到与系统who命令一样的效果,即在输出语句前添加如下代码:
cp[strlen(cp)-1] = '\0'
最后编译执行效果,发现解决了该问题:
虽然能看出基本上和who指令的执行结果一致 , 但是并非完全一样,主要在两点 , 第一是时间格式不一样,第二个是比who执行的结果多了几条,需要注意的是utmp中保存的用户,不仅仅是已经登陆的用户,还有系统的其他服务所需要的“用户” , 所以在显出所有登陆用户的时候,应该过滤掉其他用户 , 只保留登陆用户 。我们可以通过ut_type来区别,登陆用户的ut_type是USER_PROCESS 。
先用if语句对执行结果进行过滤,效果如下:
接着解决时间格式问题 , 利用man命令收到了两个非常有用的函数:localtime()和strftime(),localtime()是把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为本地时间 , strftime()则是用来定义时间格式的 , 如:年-月-日,利用这两个函数对时间进行修改后,结果显示终于和系统中who命令一模一样:
最终完整的代码如下:
#include stdio.h
#include stdlib.h
#include utmp.h
#include fcntl.h
#include unistd.h
#include time.h
#define SHOWHOST
void show_time(long timeval){
char format_time[40];
struct tm *cp;
cp = localtime(timeval);
strftime(format_time,40,"%F %R",cp);
printf("%s",format_time);
}
int show_info( struct utmp *utbufp )
{
if(utbufp-ut_type == USER_PROCESS){
printf("%-8.8s", utbufp-ut_name);
printf(" ");
printf("%-8.8s", utbufp-ut_line);
printf("");
show_time(utbufp-ut_time);
printf(" ");
#ifdefSHOWHOST
printf("(%s)", utbufp-ut_host);
#endif
printf("\n");
}
return 0;
}
int main()
{
struct utmpcurrent_record;
intutmpfd;
intreclen = sizeof(current_record);
if ( (utmpfd = open(UTMP_FILE, O_RDONLY)) == -1 ){
perror( UTMP_FILE );
exit(1);
}
while ( read(utmpfd, current_record, reclen) == reclen )
show_info(current_record);
close(utmpfd);
return 0;
}
linux系统怎么写c语言可以用gedit命令或者vim命令创建一个.clinux写入c语言命令,然后编写代码linux写入c语言命令,最后GCC编译linux写入c语言命令,或者在WIN上写好 , 然后放在Linux里面编译,一定要用Linux编译,才能在Linux终端跑该程序
关于linux写入c语言命令和linux系统怎么写c语言的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读