c++ - 调用 system() 返回 256

标签 c++ c solaris

我想在我的应用程序中使用 system() 打印 pstack 信息,但它失败并返回 256。但是我将这些代码提取到一个新的主函数中,没关系。为什么?

char cmd[256] ;
string pstackCmd;
struct timeval tv;
struct tm lt;(&tv, NULL);

localtime_r(&tv.tv_sec, &lt);
sprintf(cmd, "pstack `pgrep app` > pstack_%04d%02d%02d%02d%02d%02d%03d",
                            lt.tm_year+1900,
                            lt.tm_mon+1,
                            lt.tm_mday,
                            lt.tm_hour,
                            lt.tm_min,
                            lt.tm_sec,
                            (int)(tv.tv_usec/1000));
pstackCmd = string(cmd);
int retValue = system(pstackCmd.c_str());
if ( retValue != 0)
{
    printf("pstack `pgrep app`,retValue:%d",retValue);
}

最佳答案

取而代之的是:

if (retValue != 0)

你需要这个:

if (retValue == -1 || WEXITSTATUS(retValue) != 0)

也就是说,您首先通过查看 system() 是否返回 -1 来检查是否失败;如果没有,则命令的退出状态(传统上,零表示成功)。

关于c++ - 调用 system() 返回 256,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26375514/

相关文章:

c++ - C++ 中的 ReadFile 崩溃

c++ - 查找文本文件中的行数,并使用此维度构建数据点

c - 共享内存C问题(大小、结构

java - 我试图从solaris执行java,得到无效参数错误

c++ - C 中的可变参数函数

带有类的 C++ 模板部分特化

c++ - Solaris Studio 在目标文件中添加当前目录信息

java - tomcat - solaris getRequestURI() 返回部分解码的 uri

c - Linux 内核编程 : "Unable to handle kernel NULL pointer dereference"

c - 使用 c 在文本文件中切换项目