首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Process.spawn_sync错误

Process.spawn_sync错误
EN

Stack Overflow用户
提问于 2014-03-16 08:54:58
回答 1查看 93关注 0票数 0

我在Vala中发现了Process.spawn_sync的以下奇怪行为:

如果我在命令行中执行此操作:

valac -C *.vala

它输出c代码,一切都很好。

如果我以编程方式完成:

代码语言:javascript
复制
string sStdOut, sStdErr, sDir = "."; int nErr;

string sCmd = "valac -C *.vala";

string argv;
bool ok = Shell.parse( sCmd, argv );
if (ok) {
  ok = Process.spawn_sync(
         sDir,
         argv,
         Environ.get(),
         SpawnFlags.SEARCH_PATH,
         null,
         out sStdOut,
         out sStdErr,
         out nErr
       );

  if (!ok) {
    stderr.printf("%s", sStdErr);
  }

}

它输出:

error: *.vala not found

这让我很困惑!为什么会这样呢?

EN

回答 1

Stack Overflow用户

发布于 2014-03-16 11:01:59

我不知道你从哪里弄到Shell.parse的但是GLib.Shell.parse_argv

“将命令行解析为参数向量,与shell的方式非常相似,但没有shell将执行的许多扩展(不支持变量扩展、、运算符、文件名扩展等)。”

您可以遍历目录并手动匹配它们(如果您想保持glob风格的语法,可以使用GLib.PatternSpec ),或者您可以(Ab)使用bash -c 'valac -C *.vala'之类的东西来使用bash,而不是直接调用valac。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22431681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档