1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html> 3<!-- Copyright (C) 1988-2021 Free Software Foundation, Inc. 4 5Permission is granted to copy, distribute and/or modify this document 6under the terms of the GNU Free Documentation License, Version 1.3 or 7any later version published by the Free Software Foundation; with the 8Invariant Sections being "Free Software" and "Free Software Needs 9Free Documentation", with the Front-Cover Texts being "A GNU Manual," 10and with the Back-Cover Texts as in (a) below. 11 12(a) The FSF's Back-Cover Text is: "You are free to copy and modify 13this GNU Manual. Buying copies from GNU Press supports the FSF in 14developing GNU and promoting software freedom." --> 15<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> 16<head> 17<title>Debugging with GDB: system</title> 18 19<meta name="description" content="Debugging with GDB: system"> 20<meta name="keywords" content="Debugging with GDB: system"> 21<meta name="resource-type" content="document"> 22<meta name="distribution" content="global"> 23<meta name="Generator" content="makeinfo"> 24<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 25<link href="index.html#Top" rel="start" title="Top"> 26<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index"> 27<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> 28<link href="List-of-Supported-Calls.html#List-of-Supported-Calls" rel="up" title="List of Supported Calls"> 29<link href="Protocol_002dspecific-Representation-of-Datatypes.html#Protocol_002dspecific-Representation-of-Datatypes" rel="next" title="Protocol-specific Representation of Datatypes"> 30<link href="isatty.html#isatty" rel="previous" title="isatty"> 31<style type="text/css"> 32<!-- 33a.summary-letter {text-decoration: none} 34blockquote.smallquotation {font-size: smaller} 35div.display {margin-left: 3.2em} 36div.example {margin-left: 3.2em} 37div.indentedblock {margin-left: 3.2em} 38div.lisp {margin-left: 3.2em} 39div.smalldisplay {margin-left: 3.2em} 40div.smallexample {margin-left: 3.2em} 41div.smallindentedblock {margin-left: 3.2em; font-size: smaller} 42div.smalllisp {margin-left: 3.2em} 43kbd {font-style:oblique} 44pre.display {font-family: inherit} 45pre.format {font-family: inherit} 46pre.menu-comment {font-family: serif} 47pre.menu-preformatted {font-family: serif} 48pre.smalldisplay {font-family: inherit; font-size: smaller} 49pre.smallexample {font-size: smaller} 50pre.smallformat {font-family: inherit; font-size: smaller} 51pre.smalllisp {font-size: smaller} 52span.nocodebreak {white-space:nowrap} 53span.nolinebreak {white-space:nowrap} 54span.roman {font-family:serif; font-weight:normal} 55span.sansserif {font-family:sans-serif; font-weight:normal} 56ul.no-bullet {list-style: none} 57--> 58</style> 59 60 61</head> 62 63<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> 64<a name="system"></a> 65<div class="header"> 66<p> 67Previous: <a href="isatty.html#isatty" accesskey="p" rel="previous">isatty</a>, Up: <a href="List-of-Supported-Calls.html#List-of-Supported-Calls" accesskey="u" rel="up">List of Supported Calls</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p> 68</div> 69<hr> 70<a name="system-1"></a> 71<h4 class="unnumberedsubsubsec">system</h4> 72<a name="index-system_002c-file_002di_002fo-system-call"></a> 73 74<dl compact="compact"> 75<dt>Synopsis:</dt> 76<dd><div class="smallexample"> 77<pre class="smallexample">int system(const char *command); 78</pre></div> 79 80</dd> 81<dt>Request:</dt> 82<dd><p>‘<samp>Fsystem,<var>commandptr</var>/<var>len</var></samp>’ 83</p> 84</dd> 85<dt>Return value:</dt> 86<dd><p>If <var>len</var> is zero, the return value indicates whether a shell is 87available. A zero return value indicates a shell is not available. 88For non-zero <var>len</var>, the value returned is -1 on error and the 89return status of the command otherwise. Only the exit status of the 90command is returned, which is extracted from the host’s <code>system</code> 91return value by calling <code>WEXITSTATUS(retval)</code>. In case 92<samp>/bin/sh</samp> could not be executed, 127 is returned. 93</p> 94</dd> 95<dt>Errors:</dt> 96<dd> 97<dl compact="compact"> 98<dt><code>EINTR</code></dt> 99<dd><p>The call was interrupted by the user. 100</p></dd> 101</dl> 102 103</dd> 104</dl> 105 106<p><small>GDB</small> takes over the full task of calling the necessary host calls 107to perform the <code>system</code> call. The return value of <code>system</code> on 108the host is simplified before it’s returned 109to the target. Any termination signal information from the child process 110is discarded, and the return value consists 111entirely of the exit status of the called command. 112</p> 113<p>Due to security concerns, the <code>system</code> call is by default refused 114by <small>GDB</small>. The user has to allow this call explicitly with the 115<code>set remote system-call-allowed 1</code> command. 116</p> 117<dl compact="compact"> 118<dt><code>set remote system-call-allowed</code></dt> 119<dd><a name="index-set-remote-system_002dcall_002dallowed"></a> 120<p>Control whether to allow the <code>system</code> calls in the File I/O 121protocol for the remote target. The default is zero (disabled). 122</p> 123</dd> 124<dt><code>show remote system-call-allowed</code></dt> 125<dd><a name="index-show-remote-system_002dcall_002dallowed"></a> 126<p>Show whether the <code>system</code> calls are allowed in the File I/O 127protocol. 128</p></dd> 129</dl> 130 131 132 133 134</body> 135</html> 136