免费注册 查看新帖 |

Chinaunix

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

请教如何调用shell程序而不捕获输出? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-27 16:09 |只看该作者 |倒序浏览
比如, 我写了个小脚本, 用
`calc`打开了计算器

但是不关掉计算器的话, 程序不会继续执行...

能不能不等它执行完就继续执行呢?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2007-06-27 16:21 |只看该作者
`start calc`

论坛徽章:
0
3 [报告]
发表于 2007-06-27 16:44 |只看该作者
我试了一下, 不行啊:
$c = `start calc`;
print "hello";

关掉计算器之前, 不会打印hello的

论坛徽章:
0
4 [报告]
发表于 2007-06-27 23:43 |只看该作者
calc &

论坛徽章:
0
5 [报告]
发表于 2007-06-28 08:16 |只看该作者
fork

论坛徽章:
0
6 [报告]
发表于 2007-06-28 09:39 |只看该作者
用fork建一个新的进程
my $pid = fork ;
if( $pid == 0 )    # child
{
     calc ;
     # .....
}
else    # parent
{
    # .....
}

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2007-06-28 10:49 |只看该作者
  1. use Win32::Process;

  2. Win32::Process::Create( $obj, 'c:/windows/system32/calc.exe', 'calc', 0, NORMAL_PRIORITY_CLASS, '.' );
  3. print "Hello\n";
复制代码

其实相比起来还是 fork 好记。

论坛徽章:
0
8 [报告]
发表于 2007-06-28 10:56 |只看该作者
不过fork在windows下是不是有点问题,以前做一个东西,想用fork,可是好像遇到些问题,然后想用多线程,不过还是有问题,最后只有改用单进程了。。。。总之感觉perl在windows下对多进程,尤其是多线程支持不是很好,不知道是不是这样的

[ 本帖最后由 sewenew 于 2007-6-28 10:57 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2007-06-29 17:31 |只看该作者
我觉得后台和fork+exec都可以

1.后台由perl脚本的孙进程执行,perl接着后面的执行;
2.fork一个子进程,exec执行完以后kill这个子进程 也不浪费资源

system 和反引号都会等到shell执行完才接着perl后面的statement

论坛徽章:
0
10 [报告]
发表于 2007-06-30 14:56 |只看该作者
谢谢楼上几位, 我试了一下,
`calc&`   不行
my $pid = fork ;
if( $pid == 0 )    # child
{
     `calc `;
     # .....
}
else    # parent
{
    print "hello";
    # .....
}             这种也不行

版大的use Win32:rocess这种方法可以!
不过为了启动个calc用
Win32:rocess::Create( $obj, 'c:/windows/system32/calc.exe', 'calc', 0, NORMAL_PRIORITY_CLASS, '.' );
这么多参数... perl中存在函数重载吗?
还是只能在写子例程的时候自己对@_数组进行判断?

看来perl在windows上的移植还是不好, fork都不行....
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP