为什么在OS X上使用WRDE_SYNTAX会导致wordexp失败?

时间:2013-12-12 04:01:03

标签: macos command-line

我在OS X程序中使用wordexp进行命令行解析,无论我为输入字符串传递什么,它总是返回WRDE_SYNTAX

1 个答案:

答案 0 :(得分:1)

如果您将SIGCHLD信号设置为忽略,则

wordexp将始终以WRDE_SYNTAX失败:signal(SIGCHLD, SIG_IGN)。图书馆可能在您不知情的情况下这样做。据推测,在OS X上实现wordexp实际上会生成一个shell作为子进程来进行解析。

解决方案是在signal(SIGCHLD, SIG_DFL)之前致电wordexp。您可以在之后恢复signal(SIGCHLD, SIG_IGN)