c++ - 从 C++ 中的系统函数获取一个整数(大于 255)

标签 c++ bash return system

我有一个相对简单的问题,但我似乎做不到。我需要做的是在 C++ 程序中使用 system 函数从 bash 脚本中检索一个整数。我的理解是 system 默认返回一个整数,所以我应该可以做类似的事情

int returnedVal = system ("myscript");

然而,主要问题是 bash 脚本没有返回值,只有一个介于 0 到 255 之间的标志,表示它们是否成功。我曾尝试做一些事情,比如在脚本中写入一个文本文件,然后读入一个文件,但这导致了一些问题,我想尽可能避免这种情况。有谁知道最简单的方法吗?非常感谢。

最佳答案

POSIX exit(3) 说:

The value of status may be 0, EXIT_SUCCESS, EXIT_FAILURE, [CX] [Option Start] or any other value, though only the least significant 8 bits (that is, status & 0377) shall be available to a waiting parent process.

这意味着任何大于 8 位可能表示的值都不能通过调用 exit 从正常进程终止中退出,然后父级无法捕获更多。

更多关于这个。不要使用返回值来传输一些数据,它主要是为了表示成功或失败的状态。 0值表示成功,其他为失败。

如果您希望您的进程进行通信,那么您需要一些通信 channel (文件、管道等)。

关于c++ - 从 C++ 中的系统函数获取一个整数(大于 255),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46432302/

相关文章:

c++ - 如何对存储为 "Compressed Sparse Row"的矩阵进行稀疏矩阵索引?

bash - 在 Bash 中提取文件名和扩展名

vb.net - 函数不会在所有代码路径上返回值。使用结果时,可能会在运行时发生空引用异常

java - 几乎相同的语句,但不同的值

c++ - JSONCPP 没有正确读取文件

c++ - 错误 lnk2005 已在 .obj 中定义

c++ - 使用指针作为参数调用函数时出错

linux - 如何在 Bash 脚本中发送身份验证详细信息?

linux - 我在 bash 代码中使用 awk 语句时遇到一些困难

Java 字符串返回 null