This code example demonstrates how to execute a shell command using the std::system
function and handle its return code to determine the success or failure of the command execution. This example uses the command ls -la /Users
to list detailed information about files and directories in the /Users
directory on Unix-like systems.
#include <iostream>
#include <cstdlib> // For EXIT_SUCCESS and system function
int main() {
const char *shellCommand = "ls -la /Users";
// Execute the shell command and capture its return code
int errorCode = std::system(shellCommand);
// Check the return code from std::system
if (errorCode == -1) {
// std::system returns -1 on failure to start the shell
std::cerr << "Error initializing the shell." << std::endl;
return EXIT_FAILURE; // Return failure code
} else if (errorCode != 0) {
// std::system returns non-zero on command execution error
std::cerr << "Command returned error code " << errorCode << std::endl;
return EXIT_FAILURE; // Return failure code
} else {
// std::system returns 0 on successful command execution
std::cout << "Command executed successfully." << std::endl;
}
return EXIT_SUCCESS; // Return success code
}
const char *shellCommand = "ls -la /Users";
: Defines a constant character pointer shellCommand
that holds the shell command to be executed (ls -la /Users
lists detailed information about files in /Users
).int errorCode = std::system(shellCommand);
: Calls std::system
with shellCommand
to execute the command in the shell. The return value errorCode
captures the exit status of the executed command.if (errorCode == -1) { ... } else if (errorCode != 0) { ... } else { ... }
:if (errorCode == -1)
: Checks if std::system
failed to execute the shell (e.g., due to a lack of available system resources).std::cerr
(standard error stream).EXIT_FAILURE
to indicate failure.else if (errorCode != 0)
: Checks if the shell command returned a non-zero exit status.EXIT_FAILURE
to indicate failure.else
: Executes if the command ran successfully (returned 0
).std::cout
(standard output stream).return EXIT_SUCCESS;
and return EXIT_FAILURE;
: Indicates the overall success or failure of the program based on the command execution result.