簡體   English   中英

C ++:為什么std :: system(“exit 1”)返回256?

[英]C++: Why does std::system(“exit 1”) return 256?

我想在我的C ++程序中運行一個小的UNIX shell腳本,我想捕獲shell腳本的退出代碼。 但是std :: system返回的值並不是我所期望的:

#include <iostream>
#include <cstdlib>

int main()
{
  std::cout << std::system("echo Hello >/dev/null") << std::endl;
  std::cout << std::system("which does_not_exisit 2>/dev/null") << std::endl;

  std::cout << std::system("exit 0") << std::endl;
  std::cout << std::system("exit 1") << std::endl;
  std::cout << std::system("exit 2") << std::endl;
  std::cout << std::system("exit 3") << std::endl;
  std::cout << std::system("echo exit 4 | bash") << std::endl;

  return 0;
}

在我的Linux機器上,這會產生:

0
256
0
256
512
768
1024

似乎所有大於0的退出代碼都乘以256.這種行為的原因是什么? 這是可移植的UNIX操作系統嗎?

答案是:

  int status = std::system("exit 3");
  std::cout << WEXITSTATUS(status) << std::endl;

哪個回報:

3

欲了解更多信息,請訪

在C ++中返回system()函數調用的值,用於運行Python程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM