无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: 不点
打印 上一主题 下一主题

cish 开发构想

    [复制链接]
61#
 楼主| 发表于 2018-3-23 15:55:31 | 只看该作者
继续试验。在 main 之前加上分号 “;”,能够打印出 main 函数的地址。再定义一个 ttt 函数,让它的地址等于同一地址,结果,试验成功,ttt 的运行结果与 main 相同。
  1. user@ttyd:~$ cish
  2. [cling]$ extern int main (int, char **);
  3. [cling]% ;main
  4. (int (*)(int, char **)) Function @0x555cce819650
  5. [cling]% (int(*)(int,char**))0x555cce819650
  6. (int (*)(int, char **)) Function @0x555cce819650
  7. [cling]% int(*ttt)(int,char**);
  8. [cling]% ttt=(int(*)(int,char**))0x555cce819650
  9. (int (*)(int, char **)) Function @0x555cce819650
  10. [cling]% ttt
  11. [cling]$ exit
  12. user@ttyd:~$
复制代码

回复

使用道具 举报

62#
 楼主| 发表于 2018-3-23 16:05:08 | 只看该作者
在下面的试验中,虽然我们定义了 main,但 “;main” 仍旧显示出未定义前的值,而不是新的值。执行结果也说明了这一点。
  1. user@ttyd:~$ cish
  2. [cling]$ extern int main (int, char **);
  3. [cling]% ;main
  4. (int (*)(int, char **)) Function @0x561169f76650
  5. [cling]% int main (int argc, char **argv) { printf("this is my main\n"); return 0;}
  6. [cling]% ;main
  7. (int (*)(int, char **)) Function @0x561169f76650
  8.   at input_line_19:1:
  9. int main (int argc, char **argv) { printf("this is my main\n"); return 0;}
  10. [cling]% main
  11. [cling]$ exit
  12. user@ttyd:~$
复制代码
回复

使用道具 举报

63#
 楼主| 发表于 2018-3-23 16:34:06 | 只看该作者
在下面这个试验中,不使用 extern,而使用自定义的 main,结果,还是无法访问到新的 main,而总是获得原有的 main。试验结果证实了这一点。
  1. user@ttyd:~$ cish
  2. [cling]$ int main (int argc, char **argv) { printf("this is my main\n"); return 0;}
  3. [cling]% ;main
  4. (int (*)(int, char **)) Function @0x562cc212b650
  5. [cling]% int(*ttt)(int,char**);
  6. [cling]% ttt=(int(*)(int,char**))0x562cc212b650
  7. (int (*)(int, char **)) Function @0x562cc212b650
  8. [cling]% ttt
  9. [cling]$ exit
  10. user@ttyd:~$
复制代码
回复

使用道具 举报

64#
 楼主| 发表于 2018-3-23 16:44:06 | 只看该作者
在下面的试验中,不使用 main,而使用 main2,则一切如愿,正确打印出 “this is my main”。
  1. user@ttyd:~$ cish
  2. [cling]$ int main2 (int argc, char **argv) { printf("this is my main\n"); return 0;}
  3. [cling]% ;main2
  4. (int (*)(int, char **)) Function @0x7f2089737070
  5. [cling]% main2
  6. this is my main
  7. [cling]% int(*ttt)(int,char**);
  8. [cling]% ttt=&main2
  9. (int (*)(int, char **)) Function @0x7f2089737070
  10. [cling]% ttt
  11. this is my main
  12. [cling]% exit
  13. user@ttyd:~$
复制代码


回复

使用道具 举报

65#
 楼主| 发表于 2018-3-23 17:48:45 | 只看该作者
下面的试验,先看看 getcwd 函数的地址,以及函数的原型。然后执行这个函数,并把返回值保存在 tmp 变量中。getcwd() 的 man page 会告诉我们,应该释放掉 tmp 字符串所占用的空间。因此,我们调用 free 函数来释放 tmp 字符串。同样,在调用 free 之前,我们可以先用 “;free” 来很方便地查看 free 函数的 prototype。在释放掉 tmp 之后,我们再次执行 tmp,此时已经不能显示出当前工作目录了,而是显示出乱码。它没有崩溃,算是很幸运。C 语言很强大,但是,也需要我们很小心。稍有疏忽,就会出错。
  1. [cling]% ;getcwd
  2. (char *(*)(char *, size_t) throw()) Function @0x7fdf5de2ba90
  3. [cling]% char * tmp = getcwd(0,0)
  4. (char *) "/home/user"
  5. [cling]% tmp
  6. (char *) "/home/user"
  7. [cling]% ;free
  8. (void (*)(void *) throw()) Function @0x7fdf5ddb63e0
  9.   at /usr/include/stdlib.h:448:
  10. extern void free (void *__ptr) _
  11. [cling]% free(tmp)
  12. [cling]% tmp
  13. (char *) "P\xf2,\x82\xc3U"
  14. [cling]% tmp
  15. (char *) "P\xf2,\x82\xc3U"
  16. [cling]% exit
  17. user@ttyd:~$
复制代码

点评

是野指针。  发表于 2018-3-23 19:07
这是在测试乱指针吧,毕竟按C语言的参数传递规则。free只能把tmp指向的内存释放,不能修改tmp本身的数值(不能修改为NULL)。  发表于 2018-3-23 19:05
回复

使用道具 举报

66#
 楼主| 发表于 2018-3-23 21:53:29 | 只看该作者
回复 不知大人的点评。显示乱码的,确实是 “乱”、“野” 指针造成的。

getcwd 函数的 man page,说得很清楚。getcwd (0,0) 会返回当前目录。此函数在执行过程中会动态分配一个内存块,并把当前目录的路径名称放在内存块中,而此内存块的地址就是返回值,即 tmp 变量的值。因此,调用者必须负责用 free 函数来释放掉 tmp 所指向的这个内存块。

以上这些内容都是容易理解的。

但是我有一个问题:假如我只是用 getcwd (0,0) 来显示当前目录,而不把返回值赋值给 tmp 变量,那么,有没有办法来释放掉 getcwd 所分配的内存呢?

点评

C语言的灵活就在指针的运用,野指针问题只能靠程序员编程时注意。对于cish,其实可以把所有分配以及使用到指针变量的语句直接用{}括起来变成一个整的语句块,这样括号结束后里面自动分配(auto类型)的变量就会被自  详情 回复 发表于 2018-3-23 23:54
回复

使用道具 举报

67#
发表于 2018-3-23 23:54:10 来自手机 | 只看该作者
不点 发表于 2018-3-23 21:53
回复 不知大人的点评。显示乱码的,确实是 “乱”、“野” 指针造成的。

getcwd 函数的 man page,说得 ...

C语言的灵活就在指针的运用,野指针问题只能靠程序员编程时注意。对于cish,其实可以把所有分配以及使用到指针变量的语句直接用{}括起来变成一个整的语句块,这样括号结束后里面自动分配(auto类型)的变量就会被自动释放,后面就无法访问那些错乱的指针了。

点评

放在花括号里面的 getcwd 函数,它分配的内存块仍然存在。在花括号之外,敲入 tmp 仍然能够显示出当前目录。执行 free(tmp) 之后,才释放掉 tmp 指向的空间。  详情 回复 发表于 2018-3-24 00:27
回复

使用道具 举报

68#
 楼主| 发表于 2018-3-24 00:27:39 | 只看该作者
不知 发表于 2018-3-23 23:54
C语言的灵活就在指针的运用,野指针问题只能靠程序员编程时注意。对于cish,其实可以把所有分配以及使用 ...

放在花括号里面的 getcwd 函数,它分配的内存块仍然存在。在花括号之外,敲入 tmp 仍然能够显示出当前目录。执行 free(tmp) 之后,才释放掉 tmp 指向的空间。
  1. user@ttyd:~$ cish
  2. [cling]$ char *tmp
  3. (char *) nullptr
  4. [cling]% { tmp = getcwd(0,0); }
  5. [cling]% tmp
  6. (char *) "/home/user"
  7. [cling]% free(tmp)
  8. [cling]% tmp
  9. (char *) "\xe0\xfe\xf6" "C\x82U"
  10. [cling]%
复制代码

点评

tmp的定义应该在括号里面定义,使用tmp释放内存块后,再由C语言自动清理在{}里定义的tmp。  详情 回复 发表于 2018-3-24 09:28
回复

使用道具 举报

69#
发表于 2018-3-24 09:28:59 来自手机 | 只看该作者
本帖最后由 不知 于 2018-3-24 09:41 编辑
不点 发表于 2018-3-24 00:27
放在花括号里面的 getcwd 函数,它分配的内存块仍然存在。在花括号之外,敲入 tmp 仍然能够显示出当前目 ...

tmp的定义应该在括号里面定义,使用tmp释放内存块后,再由C语言自动清理在{}里定义的tmp。

点评

你的例子也是要调用 free。看来必须调用 free 才能释放。它不能自动释放。  详情 回复 发表于 2018-3-24 09:49
回复

使用道具 举报

70#
 楼主| 发表于 2018-3-24 09:49:21 | 只看该作者
不知 发表于 2018-3-24 09:28
tmp的定义应该在括号里面定义,使用tmp释放内存块后,再由C语言自动清理在{}里定义的tmp。

你的例子也是要调用 free。看来必须调用 free 才能释放。它不能自动释放。

评分

参与人数 1无忧币 +5 收起 理由
不知 + 5 赞一个!

查看全部评分

回复

使用道具 举报

71#
发表于 2018-3-24 10:08:09 | 只看该作者
看来还处在基本功能阶段,任重道远啊。

内存管理一般大些的项目自己会做 内存池管理。
new,malloc等将通过宏重定义到自己的创建函数。

int main() {
  mpool *m = jc_mem_new();
  func1(m)
     func2(m)
     char *tmp = jc_malloc(100, m);   //tmp的内存状态在mpool中记录

jc_mem_free(m); //mpool统一释放分配内存
  return 0;
}

分配出来的内存在前面保留一个管理用的结构体。
|strcut mem_info|真实分配内存首地址

tmp = later_free(getcwd(0,0), m);


花括号的问题,你代码写的不对,你char *tmp在外面声明的,生命周期不再括号内。

{char *tmp = getcwd(0,0);}
tmp将无法访问,tmp是栈上的空间,不一定清空还指向路径。
这个方式也只是释放tmp变量的地址空间可被再次使用,而不是getcwd产生的空间。

换成buff就明显了。


  1. char tmp[255];
  2. {
  3.   getcwd(tmp, 255);
  4. }
复制代码

  1. {
  2.   char tmp[255];
  3.   getcwd(tmp, 255);
  4. }
复制代码


这种临时用的,一般都是用局部buff,用完就自动释放了。

评分

参与人数 1无忧币 +5 收起 理由
不知 + 5 很给力!

查看全部评分

回复

使用道具 举报

72#
 楼主| 发表于 2018-3-24 11:05:01 | 只看该作者
在 getcwd(0,0) 的情况,注意它的返回值扔掉了,没有赋给 tmp 或者任何其它变量。在这样的情况下,C++ 会不会自动释放 getcwd 所 malloc 的空间?

点评

不会,这个是堆上,没变量接收也生成地址,放到寄存器eax上。循环调用,看内存变化即可测试。  发表于 2018-3-24 13:41
回复

使用道具 举报

73#
 楼主| 发表于 2018-3-24 21:12:01 | 只看该作者
本帖最后由 不点 于 2018-3-25 15:30 编辑

活跃开发中的 “S” shell,刚刚有一次提交( latest commit 14 hours ago):

https://github.com/rain-1/s

我认同作者的很多理念。作者并不想打造一个 POSIX shell,他想打造一个语法简单的 shell。一个逻辑很复杂的 shell,容易让高手在里面隐藏后门。我可能会适当吸收这个作者的一些理念。



好东西很多,都可以帮助入门。下面这个 tiny shell 也很棒。顺便说,学习任何东西,“入门” 是最要紧的一件事。“入门” 没搞好,累死也学不会。“入门” 搞好了,一步一个阶梯,就上去了。去年我折腾 bash、zsh 都以失败告终。后来就连 dash 这个相对较小的 shell,也都把我绕进去了,像走迷宫,出不来。我明白了,为什么 bash、zsh、dash 已经那么 “好” 了,却还有人不厌其烦去开发新的 shell —— 原来 “好” 也只是相对的(又上升到哲学了,烦!)。

https://github.com/aaditya-thakkar/tiny-shell




我修改了 tsh.c,现在它能运行在 cish 下。在 cish 中敲入 .x  tsh.c 即可看到 tsh 提示符,敲入 quit 退出 tsh 返回到 cish。


回复

使用道具 举报

74#
 楼主| 发表于 2018-3-27 20:26:44 | 只看该作者
这两天解决了 Cling 显示 (char *) 字符串的一个 bug,顺便增加了显示 (char **) 字符串数组的功能。有了这个功能,就可以在命令行方便地显示字符串数组了。举例:
  1. user@ttyd:~$ cish
  2. [cling]$ environ
  3. (char **) 0x563c26bf4a80
  4. LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
  5. LESSCLOSE=/usr/bin/lesspipe %s %s
  6. LANG=en_US.UTF-8
  7. XDG_SESSION_ID=1598
  8. HUSHLOGIN=FALSE
  9. USER=user
  10. PWD=/home/user
  11. HOME=/home/user
  12. XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
  13. MAIL=/var/mail/user
  14. SHELL=/bin/bash
  15. TERM=xterm-256color
  16. SHLVL=1
  17. LOGNAME=user
  18. XDG_RUNTIME_DIR=/run/user/1000
  19. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
  20. LESSOPEN=| /usr/bin/lesspipe %s
  21. _=/home/user/inst/bin/cling
  22. COLUMS=176
  23. LINES=17643
  24. [cling]%
复制代码


上述 environ 数组的内容,与外部命令 env 或 printenv 显示的结果相同。
回复

使用道具 举报

75#
 楼主| 发表于 2018-3-28 09:37:26 | 只看该作者
本帖最后由 不点 于 2018-3-28 14:41 编辑

十六进制转成十进制,很容易,直接打印出来

  1. [cling]% 0x13
  2. (int) 19
  3. [cling]%
复制代码


然而,把十进制转成十六进制,就没那么简单了。目前只找到了这个办法:

  1. [cling]% cout << hex << 19
  2. 13(std::basic_ostream<char, std::char_traits<char> >::__ostream_type &) @0x7fa6a95a9e20
  3. [cling]%
复制代码






【更新】已经让 cish 同时输出 10 进制 和 16 进制的结果。这就不必再用 cout << hex 了。

点评

printf("%02x\n",11);??  发表于 2018-3-28 19:10

评分

参与人数 1无忧币 +5 收起 理由
不知 + 5 赞一个!

查看全部评分

回复

使用道具 举报

76#
发表于 2018-3-28 21:24:56 | 只看该作者
老大工作又有进展了。。。过来瞧瞧。。。祝贺之。
十进制和十六进制转换,应该氏通过2进制中转比较好吧,乘2取1,  除2取整规则简单。。。
回复

使用道具 举报

77#
 楼主| 发表于 2018-3-31 09:20:11 | 只看该作者
记录一下,找关键字 “job libc”,找到这个网页:

https://www.gnu.org/software/libc/manual/html_node/Job-Control.html
回复

使用道具 举报

78#
 楼主| 发表于 2018-4-1 06:59:05 | 只看该作者
十分荣幸,站长亲自光临指导。

特别向站长汇报一下,Cling 本身就是一个强大的 C++ 脚本工具,可以用作 shell 编程,只不过需要按照 C++ 的规范来编程罢了(其实就是 C++ 脚本编程)。

cish 只是增加了与一个 “真正” shell 的一些兼容性(方便使用)而已。

如果看重 C++ 的强大能力,而且不嫌弃 Cling 的庞大身躯,那么用 Cling 即可进行各种开发,包括刚才提到的所谓 shell 编程(准确地说,是 C++ 脚本编程)。以站长的高超水平来看,这丝毫不成问题,轻松拿下。

如果同时又看重 shell 的方便操作,那就等着 cish 的逐步开发完善,这需要一个漫长的过程。

点评

这些年学编程,东一榔头西一棒子,没个准头。 花费时间最多的是ios开发,只是终无所成,权当娱乐。 最终发现学 shell 和 php 对于网站维护来说最为务实,今后也将作为重点方向。 以后向大师好好学习学习,接触一  详情 回复 发表于 2018-4-1 08:07
回复

使用道具 举报

79#
发表于 2018-4-1 08:07:07 | 只看该作者
不点 发表于 2018-4-1 06:59
十分荣幸,站长亲自光临指导。

特别向站长汇报一下,Cling 本身就是一个强大的 C++ 脚本工具,可以用作  ...

这些年学编程,东一榔头西一棒子,没个准头。
花费时间最多的是ios开发,只是终无所成,权当娱乐。
最终发现学 shell 和 php 对于网站维护来说最为务实,今后也将作为重点方向。
以后向大师好好学习学习,接触一些新的东西。
回复

使用道具 举报

80#
 楼主| 发表于 2018-4-2 12:01:23 | 只看该作者
搜到的知识,记录一下——

Linux 技巧:让进程在后台可靠运行的几种方法
https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/

主要讲了:

nohup、setsid、&
disown
screen
回复

使用道具 举报

81#
 楼主| 发表于 2018-4-2 15:12:40 | 只看该作者
Linux Application Development (paperback) (2nd Edition)
https://flylib.com/books/en/1.381.1/
回复

使用道具 举报

82#
 楼主| 发表于 2018-4-5 12:37:04 | 只看该作者
攻击者把 public 用户下的文件删除了!wintoflash 该采取安全措施了。我暂时想到了如下几点:

1、禁止 public 用户修改自己的口令。可以通过修改 /etc/shadow 文件来实现。man shadow 给出如下信息:

       minimum password age
           The minimum password age is the number of days the user will have to wait before she will be allowed to change her password again.
           An empty field and value 0 mean that there are no minimum password age.
       maximum password age
           The maximum password age is the number of days after which the user will have to change her password.
           After this number of days is elapsed, the password may still be valid. The user should be asked to change her password the next time
           she will log in.
           An empty field means that there are no maximum password age, no password warning period, and no password inactivity period (see below).
           If the maximum password age is lower than the minimum password age, the user cannot change her password.

           最后一句就谈到禁止某个用户修改口令的方法。

2、禁止 /home/public 目录被修改。可以通过 chattr +i /home/public 来实现(没有验证过,只是猜的)。

3、注意 /home/public/.bash_history 之类的文件,应该可以被用户修改,或被追加(append)。

4、防止用户修改 login shell(还没有研究过具体方法)。

点评

先忍几天。 最近一个多星期了我这边搞施工弄得网络根本没法用,只能手机上网,等网络正常了再研究。 不知道直接弄docker能不能解决问题。  详情 回复 发表于 2018-4-11 15:15
看来安全问题还是最重要的问题,用setfacl命令给public单独设置权限,使其不能使用passwd等与测试无关的命令。其实也可以尝试发布一个deb测试包,只运行cish的话大概只需要23M(deb默认压缩),不算太大。  详情 回复 发表于 2018-4-5 13:27
回复

使用道具 举报

83#
发表于 2018-4-5 13:27:21 | 只看该作者
本帖最后由 不知 于 2018-4-5 17:00 编辑
不点 发表于 2018-4-5 12:37
攻击者把 public 用户下的文件删除了!wintoflash 该采取安全措施了。我暂时想到了如下几点:

1、禁止 p ...

看来安全问题还是最重要的问题,用setfacl命令给public单独设置权限,使其不能使用passwd等与测试无关的命令。其实也可以尝试发布一个deb测试包,只运行cish的话大概只需要23M(deb默认压缩),不算太大,可以写一个脚本来制作,用不了几分钟。

  1. gen_deb.sh //生成deb文件的主程序
  2. cish.script //用于启动cish的脚本的后半段
  3. DEBIAN //deb的配置文件夹
  4. DEBIAN/control //deb的主配置文件。
  5. list.txt //cling文件列表
复制代码
list.txt
  1. .
  2. ./lib
  3. ./lib/clang
  4. ./lib/clang/5.0.0
  5. ./lib/clang/5.0.0/include
  6. ./lib/clang/5.0.0/include/tbmintrin.h
  7. ./lib/clang/5.0.0/include/x86intrin.h
  8. ./lib/clang/5.0.0/include/wmmintrin.h
  9. ./lib/clang/5.0.0/include/avx512dqintrin.h
  10. ./lib/clang/5.0.0/include/stdnoreturn.h
  11. ./lib/clang/5.0.0/include/xopintrin.h
  12. ./lib/clang/5.0.0/include/bmi2intrin.h
  13. ./lib/clang/5.0.0/include/avx512vpopcntdqintrin.h
  14. ./lib/clang/5.0.0/include/ia32intrin.h
  15. ./lib/clang/5.0.0/include/float.h
  16. ./lib/clang/5.0.0/include/arm_neon.h
  17. ./lib/clang/5.0.0/include/rtmintrin.h
  18. ./lib/clang/5.0.0/include/vadefs.h
  19. ./lib/clang/5.0.0/include/unwind.h
  20. ./lib/clang/5.0.0/include/tmmintrin.h
  21. ./lib/clang/5.0.0/include/xsavesintrin.h
  22. ./lib/clang/5.0.0/include/__clang_cuda_intrinsics.h
  23. ./lib/clang/5.0.0/include/limits.h
  24. ./lib/clang/5.0.0/include/xsaveintrin.h
  25. ./lib/clang/5.0.0/include/armintr.h
  26. ./lib/clang/5.0.0/include/cpuid.h
  27. ./lib/clang/5.0.0/include/fma4intrin.h
  28. ./lib/clang/5.0.0/include/clflushoptintrin.h
  29. ./lib/clang/5.0.0/include/lzcntintrin.h
  30. ./lib/clang/5.0.0/include/__clang_cuda_runtime_wrapper.h
  31. ./lib/clang/5.0.0/include/altivec.h
  32. ./lib/clang/5.0.0/include/adxintrin.h
  33. ./lib/clang/5.0.0/include/__wmmintrin_aes.h
  34. ./lib/clang/5.0.0/include/rdseedintrin.h
  35. ./lib/clang/5.0.0/include/stdint.h
  36. ./lib/clang/5.0.0/include/avx512vlcdintrin.h
  37. ./lib/clang/5.0.0/include/avx512vldqintrin.h
  38. ./lib/clang/5.0.0/include/avx512ifmaintrin.h
  39. ./lib/clang/5.0.0/include/avxintrin.h
  40. ./lib/clang/5.0.0/include/xtestintrin.h
  41. ./lib/clang/5.0.0/include/xsavecintrin.h
  42. ./lib/clang/5.0.0/include/avx512vlbwintrin.h
  43. ./lib/clang/5.0.0/include/module.modulemap
  44. ./lib/clang/5.0.0/include/stdbool.h
  45. ./lib/clang/5.0.0/include/__clang_cuda_builtin_vars.h
  46. ./lib/clang/5.0.0/include/nmmintrin.h
  47. ./lib/clang/5.0.0/include/smmintrin.h
  48. ./lib/clang/5.0.0/include/__clang_cuda_cmath.h
  49. ./lib/clang/5.0.0/include/htmintrin.h
  50. ./lib/clang/5.0.0/include/avx512vbmivlintrin.h
  51. ./lib/clang/5.0.0/include/__clang_cuda_complex_builtins.h
  52. ./lib/clang/5.0.0/include/f16cintrin.h
  53. ./lib/clang/5.0.0/include/opencl-c.h
  54. ./lib/clang/5.0.0/include/arm_acle.h
  55. ./lib/clang/5.0.0/include/stddef.h
  56. ./lib/clang/5.0.0/include/avx512erintrin.h
  57. ./lib/clang/5.0.0/include/fmaintrin.h
  58. ./lib/clang/5.0.0/include/inttypes.h
  59. ./lib/clang/5.0.0/include/bmiintrin.h
  60. ./lib/clang/5.0.0/include/pkuintrin.h
  61. ./lib/clang/5.0.0/include/s390intrin.h
  62. ./lib/clang/5.0.0/include/__stddef_max_align_t.h
  63. ./lib/clang/5.0.0/include/avx512fintrin.h
  64. ./lib/clang/5.0.0/include/avx512pfintrin.h
  65. ./lib/clang/5.0.0/include/avx512cdintrin.h
  66. ./lib/clang/5.0.0/include/msa.h
  67. ./lib/clang/5.0.0/include/tgmath.h
  68. ./lib/clang/5.0.0/include/xmmintrin.h
  69. ./lib/clang/5.0.0/include/avx512vlintrin.h
  70. ./lib/clang/5.0.0/include/avx2intrin.h
  71. ./lib/clang/5.0.0/include/cuda_wrappers
  72. ./lib/clang/5.0.0/include/cuda_wrappers/complex
  73. ./lib/clang/5.0.0/include/cuda_wrappers/algorithm
  74. ./lib/clang/5.0.0/include/cuda_wrappers/new
  75. ./lib/clang/5.0.0/include/stdarg.h
  76. ./lib/clang/5.0.0/include/__wmmintrin_pclmul.h
  77. ./lib/clang/5.0.0/include/immintrin.h
  78. ./lib/clang/5.0.0/include/stdalign.h
  79. ./lib/clang/5.0.0/include/avx512ifmavlintrin.h
  80. ./lib/clang/5.0.0/include/prfchwintrin.h
  81. ./lib/clang/5.0.0/include/mm3dnow.h
  82. ./lib/clang/5.0.0/include/iso646.h
  83. ./lib/clang/5.0.0/include/mm_malloc.h
  84. ./lib/clang/5.0.0/include/fxsrintrin.h
  85. ./lib/clang/5.0.0/include/ammintrin.h
  86. ./lib/clang/5.0.0/include/avx512vbmiintrin.h
  87. ./lib/clang/5.0.0/include/varargs.h
  88. ./lib/clang/5.0.0/include/htmxlintrin.h
  89. ./lib/clang/5.0.0/include/clzerointrin.h
  90. ./lib/clang/5.0.0/include/intrin.h
  91. ./lib/clang/5.0.0/include/__clang_cuda_math_forward_declares.h
  92. ./lib/clang/5.0.0/include/popcntintrin.h
  93. ./lib/clang/5.0.0/include/shaintrin.h
  94. ./lib/clang/5.0.0/include/lwpintrin.h
  95. ./lib/clang/5.0.0/include/vecintrin.h
  96. ./lib/clang/5.0.0/include/avx512bwintrin.h
  97. ./lib/clang/5.0.0/include/xsaveoptintrin.h
  98. ./lib/clang/5.0.0/include/pmmintrin.h
  99. ./lib/clang/5.0.0/include/mmintrin.h
  100. ./lib/clang/5.0.0/include/emmintrin.h
  101. ./lib/clang/5.0.0/include/stdatomic.h
  102. ./lib/clang/5.0.0/include/mwaitxintrin.h
  103. ./bin
  104. ./bin/cling
  105. ./share
  106. ./share/man
  107. ./share/man/man1
  108. ./share/cling
  109. ./share/cling/Jupyter
  110. ./share/cling/Jupyter/kernel
  111. ./share/cling/Jupyter/kernel/cling-cpp17
  112. ./share/cling/Jupyter/kernel/cling-cpp17/kernel.json
  113. ./share/cling/Jupyter/kernel/scripts
  114. ./share/cling/Jupyter/kernel/scripts/jupyter-cling-kernel
  115. ./share/cling/Jupyter/kernel/.gitignore
  116. ./share/cling/Jupyter/kernel/setup.py
  117. ./share/cling/Jupyter/kernel/clingkernel.py
  118. ./share/cling/Jupyter/kernel/cling.ipynb
  119. ./share/cling/Jupyter/kernel/cling-cpp14
  120. ./share/cling/Jupyter/kernel/cling-cpp14/kernel.json
  121. ./share/cling/Jupyter/kernel/cling-cpp11
  122. ./share/cling/Jupyter/kernel/cling-cpp11/kernel.json
  123. ./share/cling/Jupyter/kernel/cling-cpp1z
  124. ./share/cling/Jupyter/kernel/cling-cpp1z/kernel.json
  125. ./libexec
  126. ./include
  127. ./include/clang-c
  128. ./include/clang-c/Documentation.h
  129. ./include/clang-c/Index.h
  130. ./include/clang-c/CXString.h
  131. ./include/clang-c/CXCompilationDatabase.h
  132. ./include/clang-c/Platform.h
  133. ./include/clang-c/CXErrorCode.h
  134. ./include/clang-c/BuildSystem.h
  135. ./include/clang
  136. ./include/clang/Analysis
  137. ./include/clang/Analysis/FlowSensitive
  138. ./include/clang/Analysis/FlowSensitive/DataflowValues.h
  139. ./include/clang/Analysis/AnalysisContext.h
  140. ./include/clang/Analysis/CallGraph.h
  141. ./include/clang/Analysis/CodeInjector.h
  142. ./include/clang/Analysis/CFG.h
  143. ./include/clang/Analysis/CloneDetection.h
  144. ./include/clang/Analysis/CFGStmtMap.h
  145. ./include/clang/Analysis/DomainSpecific
  146. ./include/clang/Analysis/DomainSpecific/ObjCNoReturn.h
  147. ./include/clang/Analysis/DomainSpecific/CocoaConventions.h
  148. ./include/clang/Analysis/ProgramPoint.h
  149. ./include/clang/Analysis/AnalysisDiagnostic.h
  150. ./include/clang/Analysis/Support
  151. ./include/clang/Analysis/Support/BumpVector.h
  152. ./include/clang/Analysis/Analyses
  153. ./include/clang/Analysis/Analyses/PseudoConstantAnalysis.h
  154. ./include/clang/Analysis/Analyses/ThreadSafety.h
  155. ./include/clang/Analysis/Analyses/Dominators.h
  156. ./include/clang/Analysis/Analyses/ThreadSafetyLogical.h
  157. ./include/clang/Analysis/Analyses/ThreadSafetyUtil.h
  158. ./include/clang/Analysis/Analyses/ThreadSafetyTraverse.h
  159. ./include/clang/Analysis/Analyses/PostOrderCFGView.h
  160. ./include/clang/Analysis/Analyses/Consumed.h
  161. ./include/clang/Analysis/Analyses/FormatString.h
  162. ./include/clang/Analysis/Analyses/OSLog.h
  163. ./include/clang/Analysis/Analyses/ReachableCode.h
  164. ./include/clang/Analysis/Analyses/ThreadSafetyCommon.h
  165. ./include/clang/Analysis/Analyses/LiveVariables.h
  166. ./include/clang/Analysis/Analyses/ThreadSafetyOps.def
  167. ./include/clang/Analysis/Analyses/ThreadSafetyTIL.h
  168. ./include/clang/Analysis/Analyses/CFGReachabilityAnalysis.h
  169. ./include/clang/Analysis/Analyses/UninitializedValues.h
  170. ./include/clang/Basic
  171. ./include/clang/Basic/PartialDiagnostic.h
  172. ./include/clang/Basic/IdentifierTable.h
  173. ./include/clang/Basic/Linkage.h
  174. ./include/clang/Basic/DebugInfoOptions.h
  175. ./include/clang/Basic/DiagnosticIndexName.inc
  176. ./include/clang/Basic/DiagnosticOptions.h
  177. ./include/clang/Basic/AttrList.inc
  178. ./include/clang/Basic/MemoryBufferCache.h
  179. ./include/clang/Basic/OperatorKinds.h
  180. ./include/clang/Basic/Attributes.h
  181. ./include/clang/Basic/Specifiers.h
  182. ./include/clang/Basic/OperatorPrecedence.h
  183. ./include/clang/Basic/FileManager.h
  184. ./include/clang/Basic/DiagnosticASTKinds.inc
  185. ./include/clang/Basic/TargetBuiltins.h
  186. ./include/clang/Basic/MacroBuilder.h
  187. ./include/clang/Basic/BuiltinsPPC.def
  188. ./include/clang/Basic/SourceManager.h
  189. ./include/clang/Basic/PrettyStackTrace.h
  190. ./include/clang/Basic/TokenKinds.h
  191. ./include/clang/Basic/DiagnosticDriverKinds.inc
  192. ./include/clang/Basic/SourceLocation.h
  193. ./include/clang/Basic/AttrSubjectMatchRules.h
  194. ./include/clang/Basic/DiagnosticSerializationKinds.inc
  195. ./include/clang/Basic/TargetOptions.h
  196. ./include/clang/Basic/DiagnosticParseKinds.inc
  197. ./include/clang/Basic/VirtualFileSystem.h
  198. ./include/clang/Basic/ObjCRuntime.h
  199. ./include/clang/Basic/PlistSupport.h
  200. ./include/clang/Basic/TargetInfo.h
  201. ./include/clang/Basic/BuiltinsXCore.def
  202. ./include/clang/Basic/Sanitizers.def
  203. ./include/clang/Basic/Version.h
  204. ./include/clang/Basic/Cuda.h
  205. ./include/clang/Basic/DiagnosticCommonKinds.inc
  206. ./include/clang/Basic/Lambda.h
  207. ./include/clang/Basic/TokenKinds.def
  208. ./include/clang/Basic/BuiltinsAMDGPU.def
  209. ./include/clang/Basic/AllDiagnostics.h
  210. ./include/clang/Basic/BuiltinsSystemZ.def
  211. ./include/clang/Basic/OperatorKinds.def
  212. ./include/clang/Basic/OpenMPKinds.h
  213. ./include/clang/Basic/arm_neon.inc
  214. ./include/clang/Basic/BuiltinsMips.def
  215. ./include/clang/Basic/DiagnosticGroups.inc
  216. ./include/clang/Basic/OpenCLOptions.h
  217. ./include/clang/Basic/CapturedStmt.h
  218. ./include/clang/Basic/DiagnosticSemaKinds.inc
  219. ./include/clang/Basic/PragmaKinds.h
  220. ./include/clang/Basic/BuiltinsNEON.def
  221. ./include/clang/Basic/FileSystemStatCache.h
  222. ./include/clang/Basic/BuiltinsAArch64.def
  223. ./include/clang/Basic/AttrHasAttributeImpl.inc
  224. ./include/clang/Basic/AddressSpaces.h
  225. ./include/clang/Basic/Visibility.h
  226. ./include/clang/Basic/Builtins.h
  227. ./include/clang/Basic/BuiltinsARM.def
  228. ./include/clang/Basic/VersionTuple.h
  229. ./include/clang/Basic/DiagnosticLexKinds.inc
  230. ./include/clang/Basic/CommentOptions.h
  231. ./include/clang/Basic/DiagnosticFrontendKinds.inc
  232. ./include/clang/Basic/BuiltinsX86.def
  233. ./include/clang/Basic/SanitizerBlacklist.h
  234. ./include/clang/Basic/LangOptions.h
  235. ./include/clang/Basic/LLVM.h
  236. ./include/clang/Basic/Module.h
  237. ./include/clang/Basic/BuiltinsHexagon.def
  238. ./include/clang/Basic/CharInfo.h
  239. ./include/clang/Basic/ExceptionSpecificationType.h
  240. ./include/clang/Basic/DiagnosticIDs.h
  241. ./include/clang/Basic/ExpressionTraits.h
  242. ./include/clang/Basic/Builtins.def
  243. ./include/clang/Basic/OpenCLImageTypes.def
  244. ./include/clang/Basic/TypeTraits.h
  245. ./include/clang/Basic/BuiltinsNVPTX.def
  246. ./include/clang/Basic/BuiltinsLe64.def
  247. ./include/clang/Basic/Sanitizers.h
  248. ./include/clang/Basic/Diagnostic.h
  249. ./include/clang/Basic/XRayLists.h
  250. ./include/clang/Basic/TemplateKinds.h
  251. ./include/clang/Basic/DiagnosticOptions.def
  252. ./include/clang/Basic/LangOptions.def
  253. ./include/clang/Basic/BuiltinsNios2.def
  254. ./include/clang/Basic/FileSystemOptions.h
  255. ./include/clang/Basic/DiagnosticAnalysisKinds.inc
  256. ./include/clang/Basic/DiagnosticCategories.h
  257. ./include/clang/Basic/DiagnosticCommentKinds.inc
  258. ./include/clang/Basic/Version.inc
  259. ./include/clang/Basic/BuiltinsWebAssembly.def
  260. ./include/clang/Basic/AttrSubMatchRulesList.inc
  261. ./include/clang/Basic/ABI.h
  262. ./include/clang/Basic/OpenMPKinds.def
  263. ./include/clang/Basic/SourceManagerInternals.h
  264. ./include/clang/Basic/AttrKinds.h
  265. ./include/clang/Basic/TargetCXXABI.h
  266. ./include/clang/Basic/OpenCLExtensions.def
  267. ./include/clang/Basic/BuiltinsX86_64.def
  268. ./include/clang/StaticAnalyzer
  269. ./include/clang/StaticAnalyzer/Core
  270. ./include/clang/StaticAnalyzer/Core/IssueHash.h
  271. ./include/clang/StaticAnalyzer/Core/Checker.h
  272. ./include/clang/StaticAnalyzer/Core/PathSensitive
  273. ./include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
  274. ./include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
  275. ./include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h
  276. ./include/clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h
  277. ./include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h
  278. ./include/clang/StaticAnalyzer/Core/PathSensitive/SummaryManager.h
  279. ./include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeMap.h
  280. ./include/clang/StaticAnalyzer/Core/PathSensitive/Regions.def
  281. ./include/clang/StaticAnalyzer/Core/PathSensitive/TaintTag.h
  282. ./include/clang/StaticAnalyzer/Core/PathSensitive/SimpleConstraintManager.h
  283. ./include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
  284. ./include/clang/StaticAnalyzer/Core/PathSensitive/SymExpr.h
  285. ./include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeInfo.h
  286. ./include/clang/StaticAnalyzer/Core/PathSensitive/WorkList.h
  287. ./include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
  288. ./include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h
  289. ./include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
  290. ./include/clang/StaticAnalyzer/Core/PathSensitive/SValVisitor.h
  291. ./include/clang/StaticAnalyzer/Core/PathSensitive/Environment.h
  292. ./include/clang/StaticAnalyzer/Core/PathSensitive/FunctionSummary.h
  293. ./include/clang/StaticAnalyzer/Core/PathSensitive/BlockCounter.h
  294. ./include/clang/StaticAnalyzer/Core/PathSensitive/LoopWidening.h
  295. ./include/clang/StaticAnalyzer/Core/PathSensitive/Symbols.def
  296. ./include/clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
  297. ./include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
  298. ./include/clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h
  299. ./include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
  300. ./include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h
  301. ./include/clang/StaticAnalyzer/Core/PathSensitive/StoreRef.h
  302. ./include/clang/StaticAnalyzer/Core/PathSensitive/TaintManager.h
  303. ./include/clang/StaticAnalyzer/Core/PathSensitive/SVals.def
  304. ./include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
  305. ./include/clang/StaticAnalyzer/Core/PathSensitive/BasicValueFactory.h
  306. ./include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
  307. ./include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
  308. ./include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
  309. ./include/clang/StaticAnalyzer/Core/CheckerRegistry.h
  310. ./include/clang/StaticAnalyzer/Core/Analyses.def
  311. ./include/clang/StaticAnalyzer/Core/BugReporter
  312. ./include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
  313. ./include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h
  314. ./include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
  315. ./include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
  316. ./include/clang/StaticAnalyzer/Core/BugReporter/CommonBugCategories.h
  317. ./include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
  318. ./include/clang/StaticAnalyzer/Core/PathDiagnosticConsumers.h
  319. ./include/clang/StaticAnalyzer/Core/CheckerOptInfo.h
  320. ./include/clang/StaticAnalyzer/Core/CheckerManager.h
  321. ./include/clang/StaticAnalyzer/Checkers
  322. ./include/clang/StaticAnalyzer/Checkers/SValExplainer.h
  323. ./include/clang/StaticAnalyzer/Checkers/LocalCheckers.h
  324. ./include/clang/StaticAnalyzer/Checkers/MPIFunctionClassifier.h
  325. ./include/clang/StaticAnalyzer/Checkers/ClangCheckers.h
  326. ./include/clang/StaticAnalyzer/Checkers/ObjCRetainCount.h
  327. ./include/clang/StaticAnalyzer/Checkers/Checkers.inc
  328. ./include/clang/StaticAnalyzer/Frontend
  329. ./include/clang/StaticAnalyzer/Frontend/ModelConsumer.h
  330. ./include/clang/StaticAnalyzer/Frontend/FrontendActions.h
  331. ./include/clang/StaticAnalyzer/Frontend/CheckerRegistration.h
  332. ./include/clang/StaticAnalyzer/Frontend/AnalysisConsumer.h
  333. ./include/clang/Lex
  334. ./include/clang/Lex/HeaderSearchOptions.h
  335. ./include/clang/Lex/MultipleIncludeOpt.h
  336. ./include/clang/Lex/PPConditionalDirectiveRecord.h
  337. ./include/clang/Lex/PreprocessorOptions.h
  338. ./include/clang/Lex/ModuleMap.h
  339. ./include/clang/Lex/Preprocessor.h
  340. ./include/clang/Lex/ModuleLoader.h
  341. ./include/clang/Lex/Token.h
  342. ./include/clang/Lex/PTHLexer.h
  343. ./include/clang/Lex/TokenConcatenation.h
  344. ./include/clang/Lex/MacroArgs.h
  345. ./include/clang/Lex/LiteralSupport.h
  346. ./include/clang/Lex/ExternalPreprocessorSource.h
  347. ./include/clang/Lex/PTHManager.h
  348. ./include/clang/Lex/LexDiagnostic.h
  349. ./include/clang/Lex/HeaderMapTypes.h
  350. ./include/clang/Lex/MacroInfo.h
  351. ./include/clang/Lex/PreprocessingRecord.h
  352. ./include/clang/Lex/TokenLexer.h
  353. ./include/clang/Lex/Lexer.h
  354. ./include/clang/Lex/DirectoryLookup.h
  355. ./include/clang/Lex/CodeCompletionHandler.h
  356. ./include/clang/Lex/ScratchBuffer.h
  357. ./include/clang/Lex/PreprocessorLexer.h
  358. ./include/clang/Lex/HeaderMap.h
  359. ./include/clang/Lex/PPCallbacks.h
  360. ./include/clang/Lex/Pragma.h
  361. ./include/clang/Lex/HeaderSearch.h
  362. ./include/clang/Parse
  363. ./include/clang/Parse/ParseDiagnostic.h
  364. ./include/clang/Parse/RAIIObjectsForParser.h
  365. ./include/clang/Parse/AttrSubMatchRulesParserStringSwitches.inc
  366. ./include/clang/Parse/ParseAST.h
  367. ./include/clang/Parse/AttrParserStringSwitches.inc
  368. ./include/clang/Parse/Parser.h
  369. ./include/clang/Format
  370. ./include/clang/Format/Format.h
  371. ./include/clang/Index
  372. ./include/clang/Index/USRGeneration.h
  373. ./include/clang/Index/IndexDataConsumer.h
  374. ./include/clang/Index/CodegenNameGenerator.h
  375. ./include/clang/Index/IndexingAction.h
  376. ./include/clang/Index/CommentToXML.h
  377. ./include/clang/Index/IndexSymbol.h
  378. ./include/clang/Sema
  379. ./include/clang/Sema/DeclSpec.h
  380. ./include/clang/Sema/AttrParsedAttrImpl.inc
  381. ./include/clang/Sema/Lookup.h
  382. ./include/clang/Sema/IdentifierResolver.h
  383. ./include/clang/Sema/AttrSpellingListIndex.inc
  384. ./include/clang/Sema/AttrParsedAttrKinds.inc
  385. ./include/clang/Sema/Sema.h
  386. ./include/clang/Sema/LoopHint.h
  387. ./include/clang/Sema/Overload.h
  388. ./include/clang/Sema/SemaConsumer.h
  389. ./include/clang/Sema/CleanupInfo.h
  390. ./include/clang/Sema/TemplateDeduction.h
  391. ./include/clang/Sema/Designator.h
  392. ./include/clang/Sema/Weak.h
  393. ./include/clang/Sema/ExternalSemaSource.h
  394. ./include/clang/Sema/AttributeList.h
  395. ./include/clang/Sema/AnalysisBasedWarnings.h
  396. ./include/clang/Sema/DelayedDiagnostic.h
  397. ./include/clang/Sema/AttrParsedAttrList.inc
  398. ./include/clang/Sema/ScopeInfo.h
  399. ./include/clang/Sema/CodeCompleteConsumer.h
  400. ./include/clang/Sema/SemaDiagnostic.h
  401. ./include/clang/Sema/PrettyDeclStackTrace.h
  402. ./include/clang/Sema/Scope.h
  403. ./include/clang/Sema/AttrTemplateInstantiate.inc
  404. ./include/clang/Sema/SemaFixItUtils.h
  405. ./include/clang/Sema/SemaInternal.h
  406. ./include/clang/Sema/Initialization.h
  407. ./include/clang/Sema/ParsedTemplate.h
  408. ./include/clang/Sema/Ownership.h
  409. ./include/clang/Sema/CXXFieldCollector.h
  410. ./include/clang/Sema/ObjCMethodList.h
  411. ./include/clang/Sema/CodeCompleteOptions.h
  412. ./include/clang/Sema/SemaLambda.h
  413. ./include/clang/Sema/TypoCorrection.h
  414. ./include/clang/Sema/MultiplexExternalSemaSource.h
  415. ./include/clang/Sema/Template.h
  416. ./include/clang/CodeGen
  417. ./include/clang/CodeGen/SwiftCallingConv.h
  418. ./include/clang/CodeGen/BackendUtil.h
  419. ./include/clang/CodeGen/ModuleBuilder.h
  420. ./include/clang/CodeGen/CodeGenAction.h
  421. ./include/clang/CodeGen/ObjectFilePCHContainerOperations.h
  422. ./include/clang/CodeGen/ConstantInitBuilder.h
  423. ./include/clang/CodeGen/CodeGenABITypes.h
  424. ./include/clang/CodeGen/ConstantInitFuture.h
  425. ./include/clang/CodeGen/CGFunctionInfo.h
  426. ./include/clang/FrontendTool
  427. ./include/clang/FrontendTool/Utils.h
  428. ./include/clang/ARCMigrate
  429. ./include/clang/ARCMigrate/FileRemapper.h
  430. ./include/clang/ARCMigrate/ARCMTActions.h
  431. ./include/clang/ARCMigrate/ARCMT.h
  432. ./include/clang/Serialization
  433. ./include/clang/Serialization/SerializationDiagnostic.h
  434. ./include/clang/Serialization/ModuleManager.h
  435. ./include/clang/Serialization/ModuleFileExtension.h
  436. ./include/clang/Serialization/ASTWriter.h
  437. ./include/clang/Serialization/ASTBitCodes.h
  438. ./include/clang/Serialization/GlobalModuleIndex.h
  439. ./include/clang/Serialization/ContinuousRangeMap.h
  440. ./include/clang/Serialization/Module.h
  441. ./include/clang/Serialization/ASTReader.h
  442. ./include/clang/Serialization/AttrPCHWrite.inc
  443. ./include/clang/Serialization/ASTDeserializationListener.h
  444. ./include/clang/Serialization/AttrPCHRead.inc
  445. ./include/clang/Config
  446. ./include/clang/Config/config.h
  447. ./include/clang/Frontend
  448. ./include/clang/Frontend/CodeGenOptions.def
  449. ./include/clang/Frontend/SerializedDiagnosticReader.h
  450. ./include/clang/Frontend/LayoutOverrideSource.h
  451. ./include/clang/Frontend/FrontendDiagnostic.h
  452. ./include/clang/Frontend/ASTConsumers.h
  453. ./include/clang/Frontend/MigratorOptions.h
  454. ./include/clang/Frontend/CommandLineSourceLoc.h
  455. ./include/clang/Frontend/FrontendPluginRegistry.h
  456. ./include/clang/Frontend/PreprocessorOutputOptions.h
  457. ./include/clang/Frontend/TextDiagnostic.h
  458. ./include/clang/Frontend/Utils.h
  459. ./include/clang/Frontend/VerifyDiagnosticConsumer.h
  460. ./include/clang/Frontend/LangStandard.h
  461. ./include/clang/Frontend/SerializedDiagnosticPrinter.h
  462. ./include/clang/Frontend/LangStandards.def
  463. ./include/clang/Frontend/PCHContainerOperations.h
  464. ./include/clang/Frontend/CompilerInstance.h
  465. ./include/clang/Frontend/SerializedDiagnostics.h
  466. ./include/clang/Frontend/FrontendOptions.h
  467. ./include/clang/Frontend/ASTUnit.h
  468. ./include/clang/Frontend/TextDiagnosticPrinter.h
  469. ./include/clang/Frontend/FrontendActions.h
  470. ./include/clang/Frontend/LogDiagnosticPrinter.h
  471. ./include/clang/Frontend/FrontendAction.h
  472. ./include/clang/Frontend/MultiplexConsumer.h
  473. ./include/clang/Frontend/DiagnosticRenderer.h
  474. ./include/clang/Frontend/ChainedDiagnosticConsumer.h
  475. ./include/clang/Frontend/DependencyOutputOptions.h
  476. ./include/clang/Frontend/CodeGenOptions.h
  477. ./include/clang/Frontend/PrecompiledPreamble.h
  478. ./include/clang/Frontend/TextDiagnosticBuffer.h
  479. ./include/clang/Frontend/CompilerInvocation.h
  480. ./include/clang/Tooling
  481. ./include/clang/Tooling/Core
  482. ./include/clang/Tooling/Core/Lookup.h
  483. ./include/clang/Tooling/Core/QualTypeNames.h
  484. ./include/clang/Tooling/Core/Replacement.h
  485. ./include/clang/Tooling/Core/Diagnostic.h
  486. ./include/clang/Tooling/ArgumentsAdjusters.h
  487. ./include/clang/Tooling/Tooling.h
  488. ./include/clang/Tooling/Refactoring
  489. ./include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h
  490. ./include/clang/Tooling/Refactoring/Rename
  491. ./include/clang/Tooling/Refactoring/Rename/RenamingAction.h
  492. ./include/clang/Tooling/Refactoring/Rename/USRFinder.h
  493. ./include/clang/Tooling/Refactoring/Rename/USRLocFinder.h
  494. ./include/clang/Tooling/Refactoring/Rename/USRFindingAction.h
  495. ./include/clang/Tooling/Refactoring/AtomicChange.h
  496. ./include/clang/Tooling/FixIt.h
  497. ./include/clang/Tooling/JSONCompilationDatabase.h
  498. ./include/clang/Tooling/FileMatchTrie.h
  499. ./include/clang/Tooling/RefactoringCallbacks.h
  500. ./include/clang/Tooling/CompilationDatabase.h
  501. ./include/clang/Tooling/CommonOptionsParser.h
  502. ./include/clang/Tooling/DiagnosticsYaml.h
  503. ./include/clang/Tooling/ReplacementsYaml.h
  504. ./include/clang/Tooling/Refactoring.h
  505. ./include/clang/Tooling/CompilationDatabasePluginRegistry.h
  506. ./include/clang/AST
  507. ./include/clang/AST/CommentVisitor.h
  508. ./include/clang/AST/DeclTemplate.h
  509. ./include/clang/AST/StmtVisitor.h
  510. ./include/clang/AST/TemplateName.h
  511. ./include/clang/AST/CommentHTMLNamedCharacterReferences.inc
  512. ./include/clang/AST/ASTConsumer.h
  513. ./include/clang/AST/ASTStructuralEquivalence.h
  514. ./include/clang/AST/Attrs.inc
  515. ./include/clang/AST/DeclObjC.h
  516. ./include/clang/AST/StmtGraphTraits.h
  517. ./include/clang/AST/VTableBuilder.h
  518. ./include/clang/AST/StmtIterator.h
  519. ./include/clang/AST/CommentBriefParser.h
  520. ./include/clang/AST/ASTVector.h
  521. ./include/clang/AST/CommentHTMLTags.inc
  522. ./include/clang/AST/ExprCXX.h
  523. ./include/clang/AST/CommentCommandInfo.inc
  524. ./include/clang/AST/DeclGroup.h
  525. ./include/clang/AST/TemplateBase.h
  526. ./include/clang/AST/AttrImpl.inc
  527. ./include/clang/AST/Stmt.h
  528. ./include/clang/AST/StmtOpenMP.h
  529. ./include/clang/AST/DeclAccessPair.h
  530. ./include/clang/AST/ASTDiagnostic.h
  531. ./include/clang/AST/CommentNodes.inc
  532. ./include/clang/AST/CommentCommandList.inc
  533. ./include/clang/AST/Availability.h
  534. ./include/clang/AST/LocInfoType.h
  535. ./include/clang/AST/EvaluatedExprVisitor.h
  536. ./include/clang/AST/ExprObjC.h
  537. ./include/clang/AST/CommentDiagnostic.h
  538. ./include/clang/AST/DeclarationName.h
  539. ./include/clang/AST/Redeclarable.h
  540. ./include/clang/AST/BaseSubobject.h
  541. ./include/clang/AST/BuiltinTypes.def
  542. ./include/clang/AST/CommentLexer.h
  543. ./include/clang/AST/NSAPI.h
  544. ./include/clang/AST/OperationKinds.h
  545. ./include/clang/AST/ASTUnresolvedSet.h
  546. ./include/clang/AST/CommentCommandTraits.h
  547. ./include/clang/AST/ASTLambda.h
  548. ./include/clang/AST/TypeLocNodes.def
  549. ./include/clang/AST/RecordLayout.h
  550. ./include/clang/AST/ASTContext.h
  551. ./include/clang/AST/SelectorLocationsKind.h
  552. ./include/clang/AST/ASTImporter.h
  553. ./include/clang/AST/Attr.h
  554. ./include/clang/AST/ASTFwd.h
  555. ./include/clang/AST/CommentParser.h
  556. ./include/clang/AST/NestedNameSpecifier.h
  557. ./include/clang/AST/CXXInheritance.h
  558. ./include/clang/AST/TypeOrdering.h
  559. ./include/clang/AST/TypeNodes.def
  560. ./include/clang/AST/ASTMutationListener.h
  561. ./include/clang/AST/MangleNumberingContext.h
  562. ./include/clang/AST/TypeLoc.h
  563. ./include/clang/AST/StmtNodes.inc
  564. ./include/clang/AST/VTTBuilder.h
  565. ./include/clang/AST/UnresolvedSet.h
  566. ./include/clang/AST/DeclCXX.h
  567. ./include/clang/AST/GlobalDecl.h
  568. ./include/clang/AST/ParentMap.h
  569. ./include/clang/AST/StmtCXX.h
  570. ./include/clang/AST/DeclBase.h
  571. ./include/clang/AST/AttrVisitor.inc
  572. ./include/clang/AST/CharUnits.h
  573. ./include/clang/AST/ExprOpenMP.h
  574. ./include/clang/AST/RawCommentList.h
  575. ./include/clang/AST/LambdaCapture.h
  576. ./include/clang/AST/OperationKinds.def
  577. ./include/clang/AST/TypeVisitor.h
  578. ./include/clang/AST/DeclOpenMP.h
  579. ./include/clang/AST/OpenMPClause.h
  580. ./include/clang/AST/ASTTypeTraits.h
  581. ./include/clang/AST/RecursiveASTVisitor.h
  582. ./include/clang/AST/ExternalASTSource.h
  583. ./include/clang/AST/Type.h
  584. ./include/clang/AST/PrettyPrinter.h
  585. ./include/clang/AST/DeclVisitor.h
  586. ./include/clang/AST/AST.h
  587. ./include/clang/AST/DeclNodes.inc
  588. ./include/clang/AST/CanonicalType.h
  589. ./include/clang/AST/Comment.h
  590. ./include/clang/AST/CommentHTMLTagsProperties.inc
  591. ./include/clang/AST/ExternalASTMerger.h
  592. ./include/clang/AST/Mangle.h
  593. ./include/clang/AST/AttrIterator.h
  594. ./include/clang/AST/CommentSema.h
  595. ./include/clang/AST/AttrDump.inc
  596. ./include/clang/AST/DependentDiagnostic.h
  597. ./include/clang/AST/DeclContextInternals.h
  598. ./include/clang/AST/APValue.h
  599. ./include/clang/AST/DeclLookups.h
  600. ./include/clang/AST/Decl.h
  601. ./include/clang/AST/Expr.h
  602. ./include/clang/AST/DeclFriend.h
  603. ./include/clang/AST/StmtObjC.h
  604. ./include/clang/AST/ODRHash.h
  605. ./include/clang/AST/TypeLocVisitor.h
  606. ./include/clang/ASTMatchers
  607. ./include/clang/ASTMatchers/ASTMatchers.h
  608. ./include/clang/ASTMatchers/ASTMatchFinder.h
  609. ./include/clang/ASTMatchers/ASTMatchersInternal.h
  610. ./include/clang/ASTMatchers/ASTMatchersMacros.h
  611. ./include/clang/ASTMatchers/Dynamic
  612. ./include/clang/ASTMatchers/Dynamic/Registry.h
  613. ./include/clang/ASTMatchers/Dynamic/VariantValue.h
  614. ./include/clang/ASTMatchers/Dynamic/Diagnostics.h
  615. ./include/clang/ASTMatchers/Dynamic/Parser.h
  616. ./include/clang/Edit
  617. ./include/clang/Edit/Rewriters.h
  618. ./include/clang/Edit/EditedSource.h
  619. ./include/clang/Edit/EditsReceiver.h
  620. ./include/clang/Edit/Commit.h
  621. ./include/clang/Edit/FileOffset.h
  622. ./include/clang/Driver
  623. ./include/clang/Driver/Driver.h
  624. ./include/clang/Driver/Compilation.h
  625. ./include/clang/Driver/DriverDiagnostic.h
  626. ./include/clang/Driver/Types.h
  627. ./include/clang/Driver/Phases.h
  628. ./include/clang/Driver/SanitizerArgs.h
  629. ./include/clang/Driver/Job.h
  630. ./include/clang/Driver/Util.h
  631. ./include/clang/Driver/Types.def
  632. ./include/clang/Driver/Options.h
  633. ./include/clang/Driver/Action.h
  634. ./include/clang/Driver/Multilib.h
  635. ./include/clang/Driver/XRayArgs.h
  636. ./include/clang/Driver/Distro.h
  637. ./include/clang/Driver/Tool.h
  638. ./include/clang/Driver/Options.inc
  639. ./include/clang/Driver/ToolChain.h
  640. ./include/clang/Rewrite
  641. ./include/clang/Rewrite/Core
  642. ./include/clang/Rewrite/Core/HTMLRewrite.h
  643. ./include/clang/Rewrite/Core/DeltaTree.h
  644. ./include/clang/Rewrite/Core/RewriteBuffer.h
  645. ./include/clang/Rewrite/Core/TokenRewriter.h
  646. ./include/clang/Rewrite/Core/RewriteRope.h
  647. ./include/clang/Rewrite/Core/Rewriter.h
  648. ./include/clang/Rewrite/Frontend
  649. ./include/clang/Rewrite/Frontend/ASTConsumers.h
  650. ./include/clang/Rewrite/Frontend/Rewriters.h
  651. ./include/clang/Rewrite/Frontend/FrontendActions.h
  652. ./include/clang/Rewrite/Frontend/FixItRewriter.h
  653. ./include/cling
  654. ./include/cling/MetaProcessor
  655. ./include/cling/MetaProcessor/MetaProcessor.h
  656. ./include/cling/Utils
  657. ./include/cling/Utils/Output.h
  658. ./include/cling/Utils/UTF8.h
  659. ./include/cling/Utils/Paths.h
  660. ./include/cling/Utils/Platform.h
  661. ./include/cling/Utils/ParserStateRAII.h
  662. ./include/cling/Utils/Casting.h
  663. ./include/cling/Utils/SourceNormalization.h
  664. ./include/cling/Utils/Diagnostics.h
  665. ./include/cling/Utils/AST.h
  666. ./include/cling/Utils/Validation.h
  667. ./include/cling/Utils/OrderedMap.h
  668. ./include/cling/UserInterface
  669. ./include/cling/UserInterface/UserInterface.h
  670. ./include/cling/UserInterface/textinput
  671. ./include/cling/UserInterface/textinput/InputData.h
  672. ./include/cling/UserInterface/textinput/KeyBinding.h
  673. ./include/cling/UserInterface/textinput/StreamReader.h
  674. ./include/cling/UserInterface/textinput/SignalHandler.h
  675. ./include/cling/UserInterface/textinput/Color.h
  676. ./include/cling/UserInterface/textinput/TerminalDisplay.h
  677. ./include/cling/UserInterface/textinput/Range.h
  678. ./include/cling/UserInterface/textinput/TerminalConfigUnix.h
  679. ./include/cling/UserInterface/textinput/TerminalDisplayWin.h
  680. ./include/cling/UserInterface/textinput/StreamReaderWin.h
  681. ./include/cling/UserInterface/textinput/TerminalDisplayUnix.h
  682. ./include/cling/UserInterface/textinput/Display.h
  683. ./include/cling/UserInterface/textinput/StreamReaderUnix.h
  684. ./include/cling/UserInterface/textinput/TextInputContext.h
  685. ./include/cling/UserInterface/textinput/Reader.h
  686. ./include/cling/UserInterface/textinput/Callbacks.h
  687. ./include/cling/UserInterface/textinput/History.h
  688. ./include/cling/UserInterface/textinput/TextInput.h
  689. ./include/cling/UserInterface/textinput/Editor.h
  690. ./include/cling/UserInterface/textinput/Text.h
  691. ./include/cling/cint
  692. ./include/cling/Interpreter
  693. ./include/cling/Interpreter/CIFactory.h
  694. ./include/cling/Interpreter/Transaction.h
  695. ./include/cling/Interpreter/Exception.h
  696. ./include/cling/Interpreter/RuntimeUniverse.h
  697. ./include/cling/Interpreter/ClangInternalState.h
  698. ./include/cling/Interpreter/InterpreterCallbacks.h
  699. ./include/cling/Interpreter/RuntimePrintValue.h
  700. ./include/cling/Interpreter/ClingCodeCompleteConsumer.h
  701. ./include/cling/Interpreter/ClingOptions.h
  702. ./include/cling/Interpreter/DynamicLookupLifetimeHandler.h
  703. ./include/cling/Interpreter/AutoloadCallback.h
  704. ./include/cling/Interpreter/Value.h
  705. ./include/cling/Interpreter/DynamicLookupRuntimeUniverse.h
  706. ./include/cling/Interpreter/CompilationOptions.h
  707. ./include/cling/Interpreter/Interpreter.h
  708. ./include/cling/Interpreter/DynamicExprInfo.h
  709. ./include/cling/Interpreter/InvocationOptions.h
  710. ./include/cling/Interpreter/DynamicLibraryManager.h
  711. ./include/cling/Interpreter/LookupHelper.h
  712. ./include/cling/Interpreter/CValuePrinter.h
复制代码
gen_deb.sh
  1. #!/bin/bash

  2. old_prefix=/home/user/inst/
  3. prefix=/opt/cish/
  4. work_dir=./cish


  5. #copy compilied  files
  6. mkdir -p cish
  7. for file in `cat list.txt`
  8. do
  9. if [ -d $old_prefix/$file ]
  10. then
  11. mkdir -p $work_dir/$prefix/$file
  12. else
  13. cp $old_prefix/$file $work_dir/$prefix/$file
  14. fi
  15. done

  16. #copy user file
  17. mkdir -p $work_dir/$prefix/user/
  18. cat ~/.cishrc >> $work_dir/$prefix/user/.cishrc

  19. #create script
  20. mkdir -p  $work_dir/usr/local/bin/
  21. echo '#~/bin/sh' >> $work_dir/usr/local/bin/cish
  22. echo prefix=$prefix >> $work_dir/usr/local/bin/cish
  23. cat cish.script>> $work_dir/usr/local/bin/cish
  24. chmod +x $work_dir/usr/local/bin/cish

  25. #copy deb config file
  26. cp -r ./DEBIAN $work_dir/

  27. #build deb
  28. dpkg -b $work_dir

  29. #clean
  30. rm -rf $work_dir
复制代码
DEBIAN/control
  1. Package: cish
  2. Version:0.6-dev-beta
  3. Priority: optional
  4. Depends:libc6,libgcc1
  5. Architecture: amd64
  6. Maintainer: cish
  7. Description: Test cish
复制代码
cish.scipt
  1. PATH=$prefix/bin:$PATH

  2. if [ -e ~/.cishrc ]
  3. then
  4. echo  
  5. else
  6. cp $prefix/user/.cishrc ~/.cishrc
  7. fi

  8. cling $@
复制代码


回复

使用道具 举报

84#
 楼主| 发表于 2018-4-6 05:00:42 | 只看该作者
关于 ACL,搜到如下网页,是个入门的好材料,希望对 wintoflash 有用:

Linux 学习记录--ACL 权限控制
http://wiki.jikexueyuan.com/proj ... ission-control.html

回复

使用道具 举报

85#
 楼主| 发表于 2018-4-6 10:48:04 | 只看该作者
本帖最后由 不点 于 2018-4-6 11:36 编辑

前面我找到了 tiny shell 即 tsh.c,目前已经试着整合到 cish 当中了。它具有 job control 功能。但是,接着又发现一个更好的 shell —— ladsh —— 非常棒!几乎囊括了一个完整 shell 应有的全部内容。现在就准备撤掉 tsh,换上 ladsh。

注意,新旧版本的区别:
这是新版本:http://www.danlj.org/lad/lad2src.tar.gz
这是旧版本:http://www.danlj.org/lad/src/ladsrc.tar.gz

搜 ladsh shell 以及 ladsh1.c 可以找到相关网页:

http://www.danlj.org/lad/
http://www.danlj.org/lad/src/
http://www.danlj.org/lad/src/ladsh1.c.html
https://github.com/jivoi/junk/tree/master/linux_app_dev_troan
https://lxr.missinglinkelectronics.com/busybox/shell/hush.c

ladsh.c 是 public domain 授权。有了它,cish 的开发进度会大大加快。

点评

既然需要更多的功能,为何没有考虑直接整合bash呢  详情 回复 发表于 2018-4-7 09:16
回复

使用道具 举报

86#
发表于 2018-4-7 09:16:16 | 只看该作者
不点 发表于 2018-4-6 10:48
前面我找到了 tiny shell 即 tsh.c,目前已经试着整合到 cish 当中了。它具有 job control 功能。但是,接 ...

既然需要更多的功能,为何没有考虑直接整合bash呢

点评

去年首先尝试整合 zsh,失败后又尝试整合 bash,再次失败后,又尝试整合 dash,居然也失败了。前后经历有半年之多。再一再二再三失败后,才决定自己从头摸索。从头摸索的坏处是耗时,可能需要很多年;好处是心里踏实  详情 回复 发表于 2018-4-7 12:09
回复

使用道具 举报

87#
 楼主| 发表于 2018-4-7 12:09:36 | 只看该作者
本帖最后由 不点 于 2018-4-13 07:11 编辑
2013olly 发表于 2018-4-7 09:16
既然需要更多的功能,为何没有考虑直接整合bash呢


去年首先尝试整合 zsh,失败后又尝试整合 bash,再次失败后,又尝试整合 dash,居然也失败了。前后经历有半年之多。再一再二再三失败后,才决定自己从头摸索。从头摸索的坏处是耗时,可能需要很多年;好处是心里踏实,不会再有高深莫测、故意让人看不懂的代码了。还有一个好处是,逼着自己学习操作系统的进程模型、信号控制等知识,让自己能够比原先更深入地了解操作系统内幕。在摸索的过程中,发现有很多 “好东西”,属于 “良好教材” 的性质。把这些东西收集起来,除了能够直接帮助开发 shell 以外,还可以当成普通教材,有利于其他项目或其他目标、任务。





以上是 “不痛不痒”、“不得罪人” 的公开内容。下面说点私密内容,有可能得罪人,但可以让各位了解我的真实想法。

在企图整合 zsh、bash、dash 失败之后,我对这三个 shell 印象很不好。在它们 “强大” 的背后,我极其担心它们隐藏大量后门。我没有直接证据,只是一种直觉。不用每次都声明,上述判断代表我个人的 “真理观”。这是废话,因为每个人说的每句话都是代表他自己的 “真理观” 的,不代表 “普世真理”。好的,就说这么多,其实已经够多了,再多说就可能又要说废话了。
回复

使用道具 举报

88#
 楼主| 发表于 2018-4-7 14:37:37 | 只看该作者
回复

使用道具 举报

89#
 楼主| 发表于 2018-4-7 14:59:32 | 只看该作者
ladsh 的 4 个版本中,第一版是最简单的,只有 job control,没有 “管道” 以及 “I/O 重定向”。ladsh 分成逐步展开的 4 个版本(ladsh1、ladsh2、ladsh3、ladsh4),这真是太好了——它真是个好教材!第一版最重要,它具有 job control 功能。这好像是最难、最复杂的工作了。因此我也准备首先实现 job control。

我准备尝试用 “纯进程控制” 的方式对其 job control 的逻辑设计进行简化,不知道这个思路能否顺利实现,需要一些时日。
回复

使用道具 举报

90#
 楼主| 发表于 2018-4-9 11:32:57 | 只看该作者
下面这个英文帖子讲了 proc 和 sys 的区别,以及来龙去脉。尤其是讲了,进程信息仍然留在 proc 当中,不像是要挪到 sys 里面的样子。在别的地方看到有人说 “proc 过时了,已经被 sys 取代了”,这是误导。澄清了这一点,我们就可以放心地用 proc 来处理进程信息、实现作业控制了。不过,proc 也有 “不兼容性” 的弱点 —— 非 Linux 的操作系统有可能不支持 proc。某些早期的 BSD 支持 proc,但后来不再支持了。然而,我没打算支持 BSD;我只打算支持 Linux。因此,这就不算是个问题了。

What is the difference between procfs and sysfs?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-12-11 19:19

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表