用c语言显示系统时间编写时间在unix下怎么显示

新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 152, 距离下一级还需 48 积分
论坛徽章:3
如题,操作系统为CentOS6.5
settimeofday()试过,可以修改时间,但是修改时区,不生效。网上有说 第二个时区的结构体,要置NULL。
论坛徽章:41
system(&sudo ln -sf /usr/share/zoneinfo/PRC /etc/localtime&);
system(&sudo reboot&);
复制代码
白手起家, 积分 152, 距离下一级还需 48 积分
论坛徽章:3
windoze 发表于
不个,似乎不太好操作。
我在程序代码里,这个时区若是要由用户来操作修改呢?
而且,修改完还要重启系统,这个,也不好操作。
论坛徽章:41
你要改“系统时区”,就只能这样了。
重启不是必需的,不过不重启的话这个改动就只对新进程有效(如果新进程不去自己获取时区那也没用)。
论坛徽章:89
mini_peng 发表于
不个,似乎不太好操作。
我在程序代码里,这个时区若是要由用户来操作修改呢?
重启有重启的好处,你要修改的这个变量可能有很多程序需要使用,有些服务进程可能在启动的时候就读这个变量了,你不重启,那么那些已经读过的进程就out了。
北京盛拓优讯信息技术有限公司. 版权所有 京ICP备号 北京市公安局海淀分局网监中心备案编号:22
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处博客访问: 68002
博文数量: 7
博客积分: 1436
博客等级: 上尉
技术积分: 184
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
本篇文章旨在介绍如何开始在linux下面进行C语言程序设计,以及如何使用程序设计及调试工具进行编写C程序。学会使用gcc及gdb等工具进行linux下的c编写和调试。在开始之前,首先要说明的是,linux开发程序最主要的编辑器是vi/vim编辑器,当然还有emacs,gedit,只是vi/vim的用户实在是压倒性的多数,原因就是,它在编辑效率上的战胜了其他对手。vim是vi的升级版,带有关键字高亮显示及语法检查功能,现在很多的linux发行版都内置了它。gcc是一个非常强大的编译工具,几乎可以编译linux下所有的c语言分支,当然主指还是在ANSI C上,虽然还有其他的编译器也可以在linux平台来编译C/C++,如intel的C compiler,不过,gcc的好处在于它集成于linux中,能够更加高效和方便的编译C/c++程序。首先,让我们以一个程序设计界最经典的例子开始,就是HELL_WORLD程序,来推开linux C 语言设计的大门。编写源程序:使用vim来创建一个C语言源程序:[bruce@server1 ~]$ vim hello_world.c/*This is my first C program*/#include int main(){&&&&&&& printf("Hello World!\n");&&&&&&& return 0;}在vim编辑器中,按esc再打入:wq保存退出即完成源程序的编写了。编译源程序一:下面开始编译,使用的是gcc工具[bruce@server1 ~]$ gcc hello_world.c [bruce@server1 ~]$编译完成后,没有给我们任何的回显信息,证明没有出现编译问题。然后我们就来检查一下,编译之后有何变化,在当前目录下使用ls查看目录内容,我们可以看到多了一个a.out出来,其实它就是编译后产生的可执行文件,默认名就为a.out[bruce@server1 ~]$ lsa.out&&& hello_world.c& rpmbuild&&&&& RPM-GPG-KEY-CentOS-3Desktop& programs&&&&&& rpmbuild.txt[bruce@server1 ~]$ 执行程序:然后我们可以像执行shell脚本一样的方式来执行它:[bruce@server1 ~]$ ./a.out Hello World![bruce@server1 ~]$ 从上面我们可以看出,结果已经正常输出了。再谈编译:像上面那样,虽然可以正常的编写编译程序,但问题也来了,如果当前目录下有多个源程序,那每次编译后都产生的a.out会被后一个a.out所重写,就达到我们的要求了,所以我们可以使用一些参数来指定编译之后的可执行程序名,以用来提高识别。如上例中的hello_world.c,我们可使用如下方式编译,完成后输入ls查看:[bruce@server1 ~]$ gcc hello_world.c -o hello_world[bruce@server1 ~]$ lsa.out&&& hello_world&&& programs& rpmbuild.txtDesktop& hello_world.c& rpmbuild& RPM-GPG-KEY-CentOS-3[bruce@server1 ~]$ 我们可以发现,上面多了一个hello_world文件,这就是刚才我们使用-o参数所指定的输出程序名,然后我们可以像上面一样来执行它:[bruce@server1 ~]$ ./hello_world Hello World![bruce@server1 ~]$ 可以看到,执行结果是一样的,这样子,即使你当前目录下有再多个源程序,也不会因此程序结果被重写了,大大提高了程序的识别的结果的正确性,同时我们可以全用更多的参数来实现其他的一些功能。我们在此要说的是一个很重要的,也是很多linux的C开发者经常会用到的一个参数,就是代码优化功能,当你的程序中出现的运算次数越大,优化越明显示。这个参数就是-On参数,n可取自然数,比较典型的范围是从0变化到2或是3。具体的不在此详述了,参见man page.以上我们介绍了,编写和编译linux的一些方法,相比较之下,是不是在linux平台要方便很多呢,其实都差不多,linux也是需要IDE的,只是linux本身就是一个大的IDE环境,所以并不像windows那样需要另外安装编译环境。另外据一些专家测试,在使用gcc的方法上,编译效率要高出其他IDE20%-30%,并且如果加上一些前端支持,就可以来编译Java,fortran,pascal等等。程序的调试程序的调试是一个很重要的环节,windows IDE下那些强大的调试功能,Linux以什么来对比呢,当然,在我看来,无所不能的linux一样可以胜任调试工作,有过之而无不及,那就是安装开发工具后,另一个集成于linux中的工具,gdb。它是一款由GNU组织开发并发布的UNIX/Linux下的程序调试工具,虽然它没有图形化的友好界面,但是它功能异常强大,足以和其他一些商业化的IDE环境相媲美。这时要说的是,调试的对像是可执行文件,而不是以".c"结尾的源代码文件,也就是说,源码文件,需要经过gcc编译之后生成哥执行文件才能用gdb调试。下面就来介绍它的使用,像上面一样,我们参照一个源程序:[bruce@server1 programs]$ vim smallest.c //find the minimal between 2 INT Number#include int min(int x, int y);int main(){&&&&&&& int num1,num2,min_&&&&&&& printf("Please Input the first Number:\n");&&&&&&& scanf("%d",&num1);&&&&&&& printf("Please Input the second Number:\n");&&&&&&& scanf("%d",&num2);&&&&&&& min_num=min(num1,num2);&&&&&&& printf("The minimal one is %d\n", min_num);}int min(int a, int b){&&&&&&& if(a<b)&&&&&&&&&&&&&& else&&&&&&&}~&&&& 程序已经写在了上面,下面我们就来看一下如何产生带有调试信息的编译文件,这里我们要使用gcc的-g参数,用于在编译文件中加入一些调试信息。[bruce@server1 programs]$ gcc -g smallest.c -o smallest[bruce@server1 programs]$ lshello_world& hello_world.c& smallest& smallest.c从上面我们可以看出,有一个smallest产生出来,如果你想验证加上参数g后的变化,那么你可以不加g编译一次,然后比较其大小,你会发现,加上g后,产生的编译文件体积也会增加,所以在我们做软件开发时,加入调试信息应该在初期设计时,后期时,就应用去掉这些调试信息,当然如果想保留软件自身的调试功能,就要保留了。言归正传。使用gdb命令运行编译文件时,就可以看到如下信息,像其他的工具一样带有一些说明文字,包含一些版权、版本及其他说明,最后的(gdb)就是其环境提示符,类似于shell提示符,用于提醒用户,在此后面输入命令。[bruce@server1 programs]$ gdb smallestGNU gdb Fedora (6.8-27.el5)Copyright (C) 2008 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.& Type "show copying"and "show warranty" for details.This GDB was configured as "i386-redhat-linux-gnu"...(gdb) 下面来说一些常用的gdb调试命令list 或是l&& 用于列出源程序&&&&&&&&&&& 每打入一次list或是l将显示10行源代码,或是指定列出的行号来查看源程序 “list 行号”&&&&&&&&&&& 使用此参数时,要确保源程序没有被移除或移动位置,否则无法查看。 break/b &&& 设置断点,可指定断点行号,或是函数名等。info break& 显示断点信息run&&&&&&&& 运行程序print&&&&&& 查看程序运行时对应表达式的和变量的值next&&&&&&& 单步运行程序,但不进入函数调用step&&&&&&& 单步运行程序,且进行函数调用continue&&& 继续执行函数,直至函数结束或是下一个断点下面以smallest.c程序来挨个讲解gdb这几个常用命令的用法----- list/l, 如下示例[bruce@server1 programs]$ gdb smallestGNU gdb Fedora (6.8-27.el5)Copyright (C) 2008 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.& Type "show copying"and "show warranty" for details.This GDB was configured as "i386-redhat-linux-gnu"...(gdb) l1&&&&&& //find the minimal between 2 INT Number2&&&&&& #include 3&&&&&& int min(int x, int y);4&&&&&& int main()5&&&&&& {6&&&&&&&&&&&&&& int num1,num2,min_7&&&&&&&&&&&&&& printf("Please Input the first Number:\n");8&&&&&&&&&&&&&& scanf("%d",&num1);9&&&&&&&&&&&&&& printf("Please Input the second Number:\n");10&&&&&&&&&&&&& scanf("%d",&num2);(gdb) list 127&&&&&&&&&&&&&& printf("Please Input the first Number:\n");8&&&&&&&&&&&&&& scanf("%d",&num1);9&&&&&&&&&&&&&& printf("Please Input the second Number:\n");10&&&&&&&&&&&&& scanf("%d",&num2);11&&&&&&&&&&&&& min_num=min(num1,num2);12&&&&&&&&&&&&& printf("The minimal one is %d\n", min_num);13&&&&& }1415&&&&& int min(int a, int b)16&&&&& {(gdb) 大家可以看到它list/l的功能了吧,非常的简单,适合于手工检查程序语法错误,多个逗号,少个分号的情况,也就可以从这看得到了,当然这种错误,gcc也会告诉你的。-----break/b,设置数点,如下:(gdb) b 12Breakpoint 1 at 0x8048448: file smallest.c, line 12.(gdb) break minBreakpoint 2 at 0x804846a: file smallest.c, line 17.(gdb) 然后我们再看下一个命令-----info break/b& 显示断点信息&& (gdb) info breakNum&&&& Type&&&&&&&&&& Disp Enb Address&&& What1&&&&&& breakpoint&&&& keep y&& 0x in main at smallest.c:122&&&&&& breakpoint&&&& keep y&& 0x0804846a in min at smallest.c:17(gdb) info bNum&&&& Type&&&&&&&&&& Disp Enb Address&&& What1&&&&&& breakpoint&&&& keep y&& 0x in main at smallest.c:122&&&&&& breakpoint&&&& keep y&& 0x0804846a in min at smallest.c:17(gdb) 我们从上面显示可以看出,info break打印出了,我们先前设置好的两个断点,一个是在main函数的第12行,另外一个是在min函数。下面就可以来运行程序了-----run/r, 运行程序。可以打入一个r,也可以输全run来运行程序:(gdb) rStarting program: /home/bruce/programs/smallest Please Input the first Number:12Please Input the second Number:14Breakpoint 2, min (a=12, b=14) at smallest.c:1717&&&&&&&&&&&&& if(a<b)(gdb) 可以看到,停在了我们行鐩设置的断点min函数处。下面我们来分步执行函数,-----step,单步执行示例是接着上面的例子继续执行的Breakpoint 2, min (a=12, b=14) at smallest.c:1717&&&&&&&&&&&&& if(a<b)(gdb) step18&&&&&&&&&&&&&(gdb) step21&&&&& }(gdb) stepBreakpoint 1, main () at smallest.c:1212&&&&&&&&&&&&& printf("The minimal one is %d\n", min_num);(gdb) stepThe minimal one is 1213&&&&& }(gdb) 可以看到,执行step时,是按照顺序一步一步执行的,并且在min函数的断点处进入了函数体执行,直至结束,当然我们也可以换成next来执行,只不过next不进入函数体内部,把函数当成一个执行步骤来执行。以上就是几个常用的gdb内部命令了,有一个地方需要提一下的是,当我们在执行到断点时,为了方便测试,我们可以在这个地方为已定义的变量赋值,只需在gdb提示符下输入: set 变量名=值 然后打入continue继续执行就可以了。这篇文章介绍了linux下编辑,编译和调试程序的基本方法,使用的是vim/vi、gcc以及gdb的组合来进行c程序设计,其中有更多的玄妙之处,期待着大家在使用的时候去发现,本文仅是介绍一下概况,供参考。OK,关于linux& C语言开发的开始部分,就到这里了!
阅读(35604) | 评论(1) | 转发(7) |
给主人留下些什么吧!~~
请登录后评论。Linux下的C语言和Unix下的C语言编程有区别吗?_百度知道
Linux下的C语言和Unix下的C语言编程有区别吗?
换句话说在Linux下面编写跑通了的C代码可以直接拿到Unix下面跑吗?
我有更好的答案
1、unix和linux是操作系统,本身和C语言没有什么关系。但linux和Unix本身是用c语言实现的,现在又以linux为主,所以能够研究Linux内核,算是比较高水平的。2、C语言是可移植的,也就是用c的库函数编程。带着环境的像linux下的c,unix下的c是调用系统提供的系统调用,linux和unix差别很小,但是不同产品之间会有不同的。现在有一个标准就是为了结决unix的可移植性,POSIX。
采纳率:71%
来自团队:
应用程序基本没区别
本回答被提问者采纳
语言是可移植的,也就是用c的库函数编程。带着环境的像linux下的c,unix下的c是调用系统提供的系统调用,linux和unix差别很小,但是不同产品之间会有不同的
本回答被网友采纳
为您推荐:
其他类似问题
c语言编程的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 c语言显示当前时间 的文章

 

随机推荐