免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1386 | 回复: 8
打印 上一主题 下一主题

如何编写程序是程序运行的时候带[] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-08 14:45 |只看该作者 |倒序浏览
如何编写程序是程序运行的时候带[]

如mysql   [mysql]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-08-08 15:10 |只看该作者
看不懂。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2006-08-08 15:17 |只看该作者
很简单,
现写了一个,楼主试一下:
  1. # include <stdio.h>

  2. int main( int argc, char *argv[] )
  3. {
  4.     if ( argv[0][0] != '[' ){
  5.         char *oldName = argv[0];
  6.         argv[0] = "[mysql]";
  7.         execv( oldName, argv );
  8.     }

  9.     while(1){
  10.         sleep(1);
  11.     }

  12.     return 0;
  13. }
复制代码

论坛徽章:
0
4 [报告]
发表于 2006-08-08 15:17 |只看该作者
用国语再说一遍!

论坛徽章:
0
5 [报告]
发表于 2006-08-08 15:18 |只看该作者
原帖由 flw 于 2006-8-8 15:17 发表
很简单,
现写了一个,楼主试一下:
[code]# include <stdio.h>

int main( int argc, char *argv[] )
{
    if ( argv[0][0] != '[' ){
        char *oldName = argv[0];
        argv[0] = &quo ...


哦 这个意思呀

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2006-08-08 15:19 |只看该作者
不过这只是个小魔术,
事实上,名字里带 [] 的都是 kernel thread,而不是用这种障眼法弄的。

论坛徽章:
0
7 [报告]
发表于 2006-08-08 15:40 |只看该作者
to flw,

这个是ps命令对于什么条件下的进程的显示会加上[]的。具体是什么条件我不清楚。仔细研究ps 或看其代码会知道。

以下是我一个机器的状态。有[]的一些也是用户程序。还可以肯定不是用改变argv[0]完成的。

vpopmail 31462     1  0 Jul24 ?        00:02:27 [tcpserver]
root     31464     1  0 Jul24 ?        00:02:10 /var/qmail/bin/splogger
nobody   18822  1810  0 00:12 ?        00:00:42 [httpd]
root     19972  1626  0 08:28 ?        00:00:05 /usr/sbin/sshd
root     20011 19972  0 08:28 pts/5    00:00:02 -bash
nobody    8954  1810  0 09:30 ?        00:00:49 [httpd]
nobody    1941  1810  0 10:21 ?        00:00:26 [httpd]
root     25866  1626  0 15:20 ?        00:00:00 /usr/sbin/sshd
root     25908 25866  4 15:20 pts/6    00:00:47 -bash
nobody   27469  1810  0 15:25 ?        00:00:01 [httpd]
root     28172  1626  0 15:28 ?        00:00:00 /usr/sbin/sshd
root     28200 28172  0 15:28 pts/7    00:00:00 -bash
vpopmail 30313  6160  0 15:35 ?        00:00:00 /var/qmail/bin/qmail-smtpd 219.239.245.113 /
vpopmail 30382  6160  0 15:35 ?        00:00:00 /var/qmail/bin/qmail-smtpd 219.137.110.107 /
vpopmail 30610 31462  0 15:35 ?        00:00:00 [qmail-popup]
vpopmail 30673  6160  2 15:36 ?        00:00:01 /var/qmail/bin/qmail-smtpd 219.239.245.113 /
vpopmail 30677 30673  0 15:36 ?        00:00:00 /var/maps/bin/queue
vpopmail 30793 31462  0 15:36 ?        00:00:00 [qmail-popup]
vpopmail 30814  1681  0 15:36 ?        00:00:00 /usr/lib/courier-imap/bin/imapd Maildir
vpopmail 30861 31462  0 15:36 ?        00:00:00 [qmail-popup]
vpopmail 30868 31462  0 15:36 ?        00:00:00 [qmail-popup]
vpopmail 30869 31462  0 15:36 ?        00:00:00 [qmail-popup]

[ 本帖最后由 思一克 于 2006-8-8 15:43 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2006-08-08 15:49 |只看该作者
原帖由 思一克 于 2006-8-8 15:40 发表
to flw,

这个是ps命令对于什么条件下的进程的显示会加上[]的。具体是什么条件我不清楚。仔细研究ps 或看其代码会知道。

以下是我一个机器的状态。有[]的一些也是用户程序。还可以肯定不是用改变argv[0]完成 ...

那看来得研究一下 ps 了。
我只知道 kernel thread 会把自己的 cname 改成 [ xxx ]

[ 本帖最后由 flw 于 2006-8-8 15:59 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2006-08-08 15:52 |只看该作者
to flw,

是的。那个ps名堂还很多待搞明白。、

我还发现了一个程序所带的命令行显示不出来(仅仅一个程序名字),原因是程序的文件属性引起。
变了属性,然后就显示了。
具体情节我忘了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP