当前位置:  技术问答>linux和unix

如何查看某一结构的定义

    来源: 互联网  发布时间:2016-01-12

    本文导语:  我是linux新手,问如何查看某一结构的定义 如:我在使用函数pthread_cond_timedwait时,     man pthread_cond_timedwait 看到了函数声明 int   pthread_cond_timedwait(pthread_cond_t   *cond,    pthread_mutex_t        *mutex, const st...

我是linux新手,问如何查看某一结构的定义

如:我在使用函数pthread_cond_timedwait时,
    man pthread_cond_timedwait 看到了函数声明

int   pthread_cond_timedwait(pthread_cond_t   *cond,    pthread_mutex_t
       *mutex, const struct timespec *abstime);


这里出现了一个结构timespec ,怎么能查出该结构的所有成员定义和说明?

|
俺个人觉得讨论linux的man还是win的msdn好其实没啥意义,玩linux你就是想接近实现接近底层,所以用grep去头文件里搜,一个宏一个宏的翻,这本身就是一个学习的过程。
而这些过程有心的人会逐渐的形成一个个小的shell或者perl程序,这是属于个人的msdn,是学习的过程中构建的msdn。相信在搜索的过程中,你得到的会很多。

而微软的msdn,嗯,我承认,很方便,呵呵。

就像俺学习FD_XXX(如FD_SET)的过程一样,惊奇于它的结构和实现方式,于是去查它所属的.h,打开.h,然后会跟踪到一些莫名其妙的代码,去问google,它会告诉你这是汇编代码,呵呵,于是,你顺便可以补充一点汇编的知识,我没查msdn,我想,msdn中大概不可能会去介绍FD_SET的汇编实现,当然,更不可能让你有冲动去看看它的实现。

呵呵,个人觉得,容易有容易的好处,难有难的好处。关键要看做什么,还有,如何看待这个。

不要跟俺较真win好还是linux好,俺觉得那没意义,有空多去读段程序,或者去回答一个问题吧。
另外俺想,这么长时间一来unix上一直没有一个msdn,应该不是人为的错误,因为有奉献精神的人太多了,想构建并维护一个这个东西并不难,很多东西往往用一段时间后,才会发现它的用处,例如vi, 当你用惯了IDE,notepad, editplus上的编辑器,突然用vi,甚至在开始的一段时间内,你都觉得这个浏览器真的疯了,太费劲了,等你坚持一段时间,在你写程序的时候,突然发现你已经把h j k l下意识的用来移动,很不经意的用o进入下一行的编辑,用edit和buffer交互的编辑文档的时候,你会惊异的发现,你入门了,这个东西很有趣,现在你再回过头来比较其他的编辑器,你会觉得:嗯,这根本就不是一类东西,不用比的。
很抱歉,俺对vi的使用仅仅才入门,感觉还不能写明白,不过俺觉得这就跟man跟msdn是一样的感觉。

|
你的问题有man nanosleep 或直接查看/usr/include/time.h

linuxer有自己的swiss knife ---- grep . 
linuxer可以使用grep /usr/include -Rn -e 'struct timespec' --color 来找到所需的任何信息而且带关键字加亮。在出来的文件当中你需要寻找那些看起来较为标准化的头文件(如:time.h)里面有你需要的信息。

如果你实在想看man的说明,
man timespec 没有结果。然后(需要点常识,timespec是和时间间隔有关的函数,如select,pthread_cond_timedwait,sleep,nanosleep)
这几个函数当中其中就有两个包含了它的说明,select,nonasleep. 这个结构实在太简单,以至于没人愿意为它写个man页。

man是个强大的系统,虽然它的默认man页集比较小,风格比较老式,但它可以显示在单色字符终端上,人们习惯它而不愿意去改变它,而不是不能改变。它的页面处理,输出都可定制。输出到打印机时就是一本书。排版已经全部完成了,不需要额外的排版。

MSDN,是MS为花钱的顾客做了一个大而全的东西,也许查询某些window API比较方便。但是无法扩充,只能在那个窗口中操作,只能使用他为你提供的使用方法,打印风格,无法体现个人的使用习惯,简单讲强奸人的意识,让你思维模式化。

|
http://www.google.com/codesearch

开源的东西一般这里都能搜到,顺便不屑一下ms和msdn和楼上的

|
你可以仔细查看当前函数的man帮助,一般他都会指出在哪查找的,譬如这么函数

The abstime parameter specifies an absolute time, with  the
       same origin as time(2) and gettimeofday(2): 

它说跟gettimeofday(2)里面的结构一样,则你可以去查看gettimeofday(2),就知道了

|
楼主,你的问题太经典了!
因为在这里已经有无数“菜鸟”问过了!
但这里的“高手”,也许是unix/linux开发平台本身就没有这种直接的帮助!想与MSDN比?“高手”们会说linux没这种帮助与man无关,当然无关,man是一个功能嘛,其内容是XX提供的,这与linux本身无关。也许我可以说windows是一个操作系统,msdn只是一个帮助嘛,这也与win无关!可实际上linux的man加所有的,开发的帮助文档就是少,struct timespec这个是什么?有谁可以直接查出来?“高手”们...


对不起,我又在说linux的坏话!
闪人...

|
顺便不屑一下ms和msdn和楼上的
------
呵呵,意料之中啦!但却不是情理之中!

linux的联机开发帮助与msdn根本就没有可比性!你不屑msdn却找不出linux下的msdn!不管你承不承认,这都是事实!而正是因为这是事实,每当有人说linux下的东西比win下的什么不好之时,总有些人在说不出任何理由时却可以说win下的东西是垃圾!linux不是win!


|
呵呵,另外,如果你有Unix环境高级编程(第二版),呵呵,在后面的索引中,你会找到在383页有它的定义:
struct timespec {
  time_t tv_sec;   /* seconds */
  long tv_nsec;    /* nanoseconds */
}
稍微解释一下,秒,纳秒
希望对你有帮助

|
还有点,如果是中文版,在310页,俺的就是中文版,看起来省劲,快
呵呵,鄙视俺吧,俺喜欢中文版

|
hehe,just do it.

|
俺花了一点时间查到那个在time.h,呵呵,希望对你有帮助

|
拜托,man只是一个平台,其功能强大与否与相关内容无关的,你们说了那么多,却都在说man是如何强大方便的。
还有,linux下可以用google等在网上找资料!
可win下同样可以通过google在网上找资料啊!
所以网络是win与linux共有的,而不共用的,win的有linux没有,linux有的,绝大部分会说linux是一个自主学习过程!
我想知道的是怎么样解决问题,而不是为解决这个问题还要去学习一大堆的东西!虽然这会有进步,但效率太低!如果有一个好的帮助,看帮助不是学习吗?
我想最好当要开发一个程序时,自已首先写一个操作系统再说,如果能这样,那你要在自已的系统上开发软件不是件轻而易举的事情吗?这个学习的过程不错吧?
比来比去意义!那是因为你们还没认真比过!我用C#两年VC两年,现在linux下做C++,联机帮助是开发必不可少的!

|
用cscope跳转。

很好用

|
看看输出: :-)

C symbol: timespec

  File      Function                   Line
0 log.c                          3 *mutex, const struct timespec *abstime);
1 pthread.h pthread_mutex_timedlock    348 __const struct timespec *__restrict
2 pthread.h pthread_cond_broadcast     415 __const struct timespec *__restrict
3 pthread.h pthread_rwlock_timedrdlock 457 __const struct timespec *__restrict
4 pthread.h pthread_rwlock_timedwrlock 470 __const struct timespec *__restrict
5 sched.h   sched_rr_get_interval       63 extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW;
6 signal.h  sigpending                 285 __const struct timespec *__restrict __timeout);
7 time.h    __USING_NAMESPACE_STD      118 struct timespec
8 time.h    __USING_NAMESPACE_STD      161 struct timespec it_interval;
9 time.h    __USING_NAMESPACE_STD      162 struct timespec it_value;
a time.h    dysize                     324 extern int nanosleep (__const struct timespec *__requested_time,
b time.h    dysize                     325 struct timespec *__remaining);
c time.h    clock_getres               329 extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW;
d time.h    clock_gettime              332 extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
e time.h    clock_settime              335 extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
f time.h    clock_settime              344 __const struct timespec *__req,
g time.h    clock_settime              345 struct timespec *__rem);




---
7 time.h    __USING_NAMESPACE_STD      118 struct timespec
就是你要的啦














Find this C symbol:
Find this global definition:
Find functions called by this function:
Find functions calling this function:
Find this text string:
Change this text string:
Find this egrep pattern:
Find this file:
Find files #including this file:
Find all function definitions:
Find all symbol assignments:

|
呵呵,俺觉得awjx这句话非常说明linux学习的过程:为解决这个问题还要去学习一大堆的东西。在linux上,的确是这样。
个人认为:
1. 在linux上学习,绝对没有速成的,也不要报着这样的想法。所以如果想知道:怎么样解决问题,你可能需要克服的是n个问题。当然,最好不要问别人,靠自己和google,往往能解决。实在解决不了再发贴,呵呵。
2. 俺不是说直接去找解决问题有啥不好,但俺觉得自己逐步的克服一个又一个困难,最终达成目的,这个过程,实在是太享受了。就像千辛万苦找到了一个bug后的感觉一样。

3.也许,过段时间,你会发现,你知道了很多东西,更重要的是,你发现原来有那么多东西你不知
道。而这是你直接找到问题的解决方案所不能提供的。
呵呵,不好意思,还整了个一二三条来。

咱中国有句俗话,叫“触类旁通”,“厚积薄发”,学linux编程不一定能做到这一点,但如果踏踏实实,一步一个脚印,不浮躁,并为自己的一点小小的成果(如今天俺学会了vi中用cw)而快乐(当然,不是妄自尊大),就够了。
俺不想教书,这是俺的个人感受

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • redhat/centos 常用信息查看命令整理
  • unix在终端下如何查看如何查看 光盘里的内容? 如何进入光盘所在目录? 用什么命令可以查看光盘里文件的目录?
  • Ubuntu查看系统信息命令介绍
  • linux 命令执行结束后,想查看结果,但部分结果已经被覆盖,如何查看?
  • Ubuntu查看硬盘,分区相关命令介绍
  • 通过c程序写代码怎么查看进程是不是存在了?怎么查看该进程占用的内存是多少?
  • resin及jetty介绍以及如何 查看他们的版本号
  • ls查看时,查看到的4294967294 啥意思,熊猫请进
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • linux命令问题 输入一个查看命令(比如help) 显示满屏后 我怎么查看上一页的显示
  • MyEclipse如何查看和设置文件编码格式相关操作
  • linux能不能像xp那样子以幻灯片方式查看图片。我在一个文件夹里面有几张图片,想进行挑选。用幻灯片查看的方式比较方便
  • Ubuntu查看内存,进程相关命令介绍
  • 请问linux下怎么用命令行的方式查看系统自动运行的程序?(因为我只能通过ssh来查看)
  • 准备学习docker: docker version命令查看版本
  • 求教 关于gdb如何查看lib中的表达式
  • windows/windows 7/windows 8 下打开查看、修改及保存超大(GB级)文本文件及其它类型文件的工具-PilotEdit
  • 在AIX(4.3)系统上如何查看内存情况
  • linux/Centos下查看和修改网卡Mac地址(ifconfig命令)
  • linux下查看内核的命令是什么?
  • Ubuntu ADSL上网,网络信息查看及防火墙相关配置命令介绍
  • SunOS solaris 系统维护-查看cpu、内存、磁盘空间的命令


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    WEB前端 iis7站长之家