我是否必须担心"没有shell可用"来执行系统命令?

Lav*_*air 5 c

手册页"man system"包含以下部分:

  • 如果command为NULL,则在shell可用时为非零值,如果没有可用shell则为0.

这基本上表明我可以检查 if(system(NULL) != 0) {foo;}shell是否当前可用.

我何时必须考虑这样做?因为我从未遇到过与此特定案例相关的错误.

mel*_*ene 4

也来自man system

[...]即使 POSIX.1-2001 需要一致的实现来提供 shell,如果调用程序之前调用过chroot(2) [...]

/bin/sh因此,这是一种可能不可用的情况。实际上我不会对此太担心。(但话又说回来,我可能system一开始就不会在实际代码中使用。)