CINXE.COM

syscall - Perldoc Browser

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>syscall - Perldoc Browser</title> <link rel="search" href="/opensearch.xml" type="application/opensearchdescription+xml" title="Perldoc Browser"> <link rel="canonical" href="https://perldoc.perl.org/functions/syscall"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/styles/stackoverflow-light.min.css" integrity="sha512-cG1IdFxqipi3gqLmksLtuk13C+hBa57a6zpWxMeoY3Q9O6ooFxq50DayCdm0QrDgZjMUn23z/0PMZlgft7Yp5Q==" crossorigin="anonymous" /> <style> body { background: #f4f4f5; color: #020202; } .navbar-dark { background-image: -webkit-linear-gradient(top, #005f85 0, #002e49 100%); background-image: -o-linear-gradient(top, #005f85 0, #002e49 100%); background-image: linear-gradient(to bottom, #005f85 0, #002e49 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff005f85', endColorstr='#ff002e49', GradientType=0); background-repeat: repeat-x; } .navbar-dark .navbar-nav .nav-link, .navbar-dark .navbar-nav .nav-link:focus { color: #fff } .navbar-dark .navbar-nav .nav-link:hover { color: #ffef68 } #wrapperlicious { margin: 0 auto; font: 0.9em 'Helvetica Neue', Helvetica, sans-serif; font-weight: normal; line-height: 1.5em; margin: 0; padding: 0; } #wrapperlicious h1 { font-size: 1.5em } #wrapperlicious h2 { font-size: 1.3em } #wrapperlicious h3 { font-size: 1.1em } #wrapperlicious h4 { font-size: 0.9em } #wrapperlicious h1, #wrapperlicious h2, #wrapperlicious h3, #wrapperlicious h4, #wrapperlicious dt { color: #020202; margin-top: 1em; margin-bottom: 1em; position: relative; font-weight: bold; } #wrapperlicious a { color: inherit; text-decoration: underline } #wrapperlicious #toc { text-decoration: none } #wrapperlicious a:hover { color: #2a2a2a } #wrapperlicious a img { border: 0 } #wrapperlicious :not(pre) > code { color: inherit; background-color: rgba(0, 0, 0, 0.04); border-radius: 3px; font: 0.9em Consolas, Menlo, Monaco, monospace; padding: 0.3em; } #wrapperlicious dd { margin: 0; margin-left: 2em; } #wrapperlicious dt { color: #2a2a2a; font-weight: bold; margin-left: 0.9em; } #wrapperlicious p { margin-bottom: 1em; margin-top: 1em; } #wrapperlicious li > p { margin-bottom: 0; margin-top: 0; } #wrapperlicious pre { border: 1px solid #c1c1c1; border-radius: 3px; font: 100% Consolas, Menlo, Monaco, monospace; margin-bottom: 1em; margin-top: 1em; } #wrapperlicious pre > code { display: block; background-color: #f6f6f6; font: 0.9em Consolas, Menlo, Monaco, monospace; line-height: 1.5em; text-align: left; white-space: pre; padding: 1em; } #wrapperlicious dl, #wrapperlicious ol, #wrapperlicious ul { margin-bottom: 1em; margin-top: 1em; } #wrapperlicious ul { list-style-type: square; } #wrapperlicious ul ul { margin-bottom: 0px; margin-top: 0px; } #footer { font-size: 0.8em; padding-top: 0.5em; text-align: center; } #more { display: inline; font-size: 0.8em; } #perldocdiv { background-color: #fff; border: 1px solid #c1c1c1; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; margin-left: auto; margin-right: auto; padding: 3em; padding-top: 1em; max-width: 960px; } #moduleversion { float: right } #wrapperlicious .leading-notice { font-style: italic; padding-left: 1em; margin-top: 1em; margin-bottom: 1em; } #wrapperlicious .permalink { display: none; left: -0.75em; position: absolute; padding-right: 0.25em; text-decoration: none; } #wrapperlicious h1:hover .permalink, #wrapperlicious h2:hover .permalink, #wrapperlicious h3:hover .permalink, #wrapperlicious h4:hover .permalink, #wrapperlicious dt:hover .permalink { display: block; } </style> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-KVNWBNT5FB"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-KVNWBNT5FB'); gtag('config', 'UA-50555-3'); </script> </head> <body> <nav class="navbar navbar-expand-md navbar-dark bg-dark justify-content-between"> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <a class="navbar-brand" href="/"><img src="/images/perl_camel_30.png" width="30" height="30" class="d-inline-block align-top" alt="Perl Camel Logo"> Perldoc Browser</a> <div class="collapse navbar-collapse" id="navbarNav"> <ul class="navbar-nav mr-auto"> <li class="nav-item dropdown text-nowrap"> <a class="nav-link dropdown-toggle" href="#" id="dropdownlink-stable" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">5.18.2</a> <div class="dropdown-menu" aria-labelledby="dropdownlink-stable"> <a class="dropdown-item" href="/functions/syscall">Latest</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.40.1/functions/syscall">5.40.1</a> <a class="dropdown-item" href="/5.40.0/functions/syscall">5.40.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.38.3/functions/syscall">5.38.3</a> <a class="dropdown-item" href="/5.38.2/functions/syscall">5.38.2</a> <a class="dropdown-item" href="/5.38.1/functions/syscall">5.38.1</a> <a class="dropdown-item" href="/5.38.0/functions/syscall">5.38.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.36.3/functions/syscall">5.36.3</a> <a class="dropdown-item" href="/5.36.2/functions/syscall">5.36.2</a> <a class="dropdown-item" href="/5.36.1/functions/syscall">5.36.1</a> <a class="dropdown-item" href="/5.36.0/functions/syscall">5.36.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.34.3/functions/syscall">5.34.3</a> <a class="dropdown-item" href="/5.34.2/functions/syscall">5.34.2</a> <a class="dropdown-item" href="/5.34.1/functions/syscall">5.34.1</a> <a class="dropdown-item" href="/5.34.0/functions/syscall">5.34.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.32.1/functions/syscall">5.32.1</a> <a class="dropdown-item" href="/5.32.0/functions/syscall">5.32.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.30.3/functions/syscall">5.30.3</a> <a class="dropdown-item" href="/5.30.2/functions/syscall">5.30.2</a> <a class="dropdown-item" href="/5.30.1/functions/syscall">5.30.1</a> <a class="dropdown-item" href="/5.30.0/functions/syscall">5.30.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.28.3/functions/syscall">5.28.3</a> <a class="dropdown-item" href="/5.28.2/functions/syscall">5.28.2</a> <a class="dropdown-item" href="/5.28.1/functions/syscall">5.28.1</a> <a class="dropdown-item" href="/5.28.0/functions/syscall">5.28.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.26.3/functions/syscall">5.26.3</a> <a class="dropdown-item" href="/5.26.2/functions/syscall">5.26.2</a> <a class="dropdown-item" href="/5.26.1/functions/syscall">5.26.1</a> <a class="dropdown-item" href="/5.26.0/functions/syscall">5.26.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.24.4/functions/syscall">5.24.4</a> <a class="dropdown-item" href="/5.24.3/functions/syscall">5.24.3</a> <a class="dropdown-item" href="/5.24.2/functions/syscall">5.24.2</a> <a class="dropdown-item" href="/5.24.1/functions/syscall">5.24.1</a> <a class="dropdown-item" href="/5.24.0/functions/syscall">5.24.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.22.4/functions/syscall">5.22.4</a> <a class="dropdown-item" href="/5.22.3/functions/syscall">5.22.3</a> <a class="dropdown-item" href="/5.22.2/functions/syscall">5.22.2</a> <a class="dropdown-item" href="/5.22.1/functions/syscall">5.22.1</a> <a class="dropdown-item" href="/5.22.0/functions/syscall">5.22.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.20.3/functions/syscall">5.20.3</a> <a class="dropdown-item" href="/5.20.2/functions/syscall">5.20.2</a> <a class="dropdown-item" href="/5.20.1/functions/syscall">5.20.1</a> <a class="dropdown-item" href="/5.20.0/functions/syscall">5.20.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.18.4/functions/syscall">5.18.4</a> <a class="dropdown-item" href="/5.18.3/functions/syscall">5.18.3</a> <a class="dropdown-item active" href="/5.18.2/functions/syscall">5.18.2</a> <a class="dropdown-item" href="/5.18.1/functions/syscall">5.18.1</a> <a class="dropdown-item" href="/5.18.0/functions/syscall">5.18.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.16.3/functions/syscall">5.16.3</a> <a class="dropdown-item" href="/5.16.2/functions/syscall">5.16.2</a> <a class="dropdown-item" href="/5.16.1/functions/syscall">5.16.1</a> <a class="dropdown-item" href="/5.16.0/functions/syscall">5.16.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.14.4/functions/syscall">5.14.4</a> <a class="dropdown-item" href="/5.14.3/functions/syscall">5.14.3</a> <a class="dropdown-item" href="/5.14.2/functions/syscall">5.14.2</a> <a class="dropdown-item" href="/5.14.1/functions/syscall">5.14.1</a> <a class="dropdown-item" href="/5.14.0/functions/syscall">5.14.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.12.5/functions/syscall">5.12.5</a> <a class="dropdown-item" href="/5.12.4/functions/syscall">5.12.4</a> <a class="dropdown-item" href="/5.12.3/functions/syscall">5.12.3</a> <a class="dropdown-item" href="/5.12.2/functions/syscall">5.12.2</a> <a class="dropdown-item" href="/5.12.1/functions/syscall">5.12.1</a> <a class="dropdown-item" href="/5.12.0/functions/syscall">5.12.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.10.1/functions/syscall">5.10.1</a> <a class="dropdown-item" href="/5.10.0/functions/syscall">5.10.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.8.9/functions/syscall">5.8.9</a> <a class="dropdown-item" href="/5.8.8/functions/syscall">5.8.8</a> <a class="dropdown-item" href="/5.8.7/functions/syscall">5.8.7</a> <a class="dropdown-item" href="/5.8.6/functions/syscall">5.8.6</a> <a class="dropdown-item" href="/5.8.5/functions/syscall">5.8.5</a> <a class="dropdown-item" href="/5.8.4/functions/syscall">5.8.4</a> <a class="dropdown-item" href="/5.8.3/functions/syscall">5.8.3</a> <a class="dropdown-item" href="/5.8.2/functions/syscall">5.8.2</a> <a class="dropdown-item" href="/5.8.1/functions/syscall">5.8.1</a> <a class="dropdown-item" href="/5.8.0/functions/syscall">5.8.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.6.2/functions/syscall">5.6.2</a> <a class="dropdown-item" href="/5.6.1/functions/syscall">5.6.1</a> <a class="dropdown-item" href="/5.6.0/functions/syscall">5.6.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.005_04/functions/syscall">5.005_04</a> <a class="dropdown-item" href="/5.005_03/functions/syscall">5.005_03</a> <a class="dropdown-item" href="/5.005_02/functions/syscall">5.005_02</a> <a class="dropdown-item" href="/5.005_01/functions/syscall">5.005_01</a> <a class="dropdown-item" href="/5.005/functions/syscall">5.005</a> </div> </li> <li class="nav-item dropdown text-nowrap"> <a class="nav-link dropdown-toggle" href="#" id="dropdownlink-dev" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dev</a> <div class="dropdown-menu" aria-labelledby="dropdownlink-dev"> <a class="dropdown-item" href="/blead/functions/syscall">blead</a> <a class="dropdown-item" href="/5.41.9/functions/syscall">5.41.9</a> <a class="dropdown-item" href="/5.41.8/functions/syscall">5.41.8</a> <a class="dropdown-item" href="/5.41.7/functions/syscall">5.41.7</a> <a class="dropdown-item" href="/5.41.6/functions/syscall">5.41.6</a> <a class="dropdown-item" href="/5.41.5/functions/syscall">5.41.5</a> <a class="dropdown-item" href="/5.41.4/functions/syscall">5.41.4</a> <a class="dropdown-item" href="/5.41.3/functions/syscall">5.41.3</a> <a class="dropdown-item" href="/5.41.2/functions/syscall">5.41.2</a> <a class="dropdown-item" href="/5.41.1/functions/syscall">5.41.1</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.40.1-RC1/functions/syscall">5.40.1-RC1</a> <a class="dropdown-item" href="/5.40.0-RC2/functions/syscall">5.40.0-RC2</a> <a class="dropdown-item" href="/5.40.0-RC1/functions/syscall">5.40.0-RC1</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.39.10/functions/syscall">5.39.10</a> <a class="dropdown-item" href="/5.39.9/functions/syscall">5.39.9</a> <a class="dropdown-item" href="/5.39.8/functions/syscall">5.39.8</a> <a class="dropdown-item" href="/5.39.7/functions/syscall">5.39.7</a> <a class="dropdown-item" href="/5.39.6/functions/syscall">5.39.6</a> <a class="dropdown-item" href="/5.39.5/functions/syscall">5.39.5</a> <a class="dropdown-item" href="/5.39.4/functions/syscall">5.39.4</a> <a class="dropdown-item" href="/5.39.3/functions/syscall">5.39.3</a> <a class="dropdown-item" href="/5.39.2/functions/syscall">5.39.2</a> <a class="dropdown-item" href="/5.39.1/functions/syscall">5.39.1</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.38.3-RC1/functions/syscall">5.38.3-RC1</a> </div> </li> <li class="nav-item dropdown text-nowrap"> <a class="nav-link dropdown-toggle" href="#" id="dropdownlink-nav" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Documentation</a> <div class="dropdown-menu" aria-labelledby="dropdownlink-nav"> <a class="dropdown-item" href="/5.18.2/perl">Perl</a> <a class="dropdown-item" href="/5.18.2/perlintro">Intro</a> <a class="dropdown-item" href="/5.18.2/perl#Tutorials">Tutorials</a> <a class="dropdown-item" href="/5.18.2/perlfaq">FAQs</a> <a class="dropdown-item" href="/5.18.2/perl#Reference-Manual">Reference</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.18.2/perlop">Operators</a> <a class="dropdown-item" href="/5.18.2/functions">Functions</a> <a class="dropdown-item" href="/5.18.2/variables">Variables</a> <a class="dropdown-item" href="/5.18.2/modules">Modules</a> <a class="dropdown-item" href="/5.18.2/perlutil">Utilities</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.18.2/perldelta">Release Notes</a> <a class="dropdown-item" href="/5.18.2/perlcommunity">Community</a> <a class="dropdown-item" href="/5.18.2/perlhist">History</a> </div> </li> </ul> <ul class="navbar-nav"> <script> function set_expand (expand) { var perldocdiv = document.getElementById('perldocdiv'); var width = window.getComputedStyle(perldocdiv).getPropertyValue('max-width'); var expanded = (width == '' || width == 'none') ? true : false; if (expand === null) { expand = !expanded; } if ((expand && !expanded) || (!expand && expanded)) { perldocdiv.style.setProperty('max-width', expand ? 'none' : '960px'); var button_classlist = document.getElementById('content-expand-button').classList; if (expand) { button_classlist.add('btn-light'); button_classlist.remove('btn-outline-light'); } else { button_classlist.add('btn-outline-light'); button_classlist.remove('btn-light'); } } return expand; } function toggle_expand () { var expand = set_expand(null); document.cookie = 'perldoc_expand=' + (expand ? 1 : 0) + '; path=/; expires=Tue, 19 Jan 2038 03:14:07 UTC'; } function read_expand () { return document.cookie.split(';').some(function (item) { return item.indexOf('perldoc_expand=1') >= 0 }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function () { if (read_expand()) { set_expand(true); } }); } else if (read_expand()) { set_expand(true); } </script> <button id="content-expand-button" type="button" class="btn btn-outline-light d-none d-lg-inline-block mr-4" onclick="toggle_expand()">Expand</button> </ul> <form class="form-inline" method="get" action="/5.18.2/search"> <input class="form-control mr-3" type="search" name="q" placeholder="Search" aria-label="Search" value=""> </form> </div> </nav> <div id="wrapperlicious" class="container-fluid"> <div id="perldocdiv"> <div id="links"> <a href="/5.18.2/functions">functions</a> / <a href="/5.18.2/functions/syscall">syscall</a> <div id="more"> (<a href="/5.18.2/functions/syscall.txt">source</a>, <a href="https://metacpan.org/pod/perlfunc#syscall-NUMBER,-LIST">CPAN</a>) </div> </div> <div class="leading-notice"> You are viewing the version of this documentation from Perl 5.18.2. <a href="/functions/syscall">View the latest version</a> </div> <dl> <dt id="syscall-NUMBER,-LIST"><a class="permalink" href="#syscall-NUMBER,-LIST">#</a><a id="syscall"></a><a id="syscall-NUMBER-LIST"></a>syscall NUMBER, LIST </dt> <dd> <p>Calls the system call specified as the first element of the list, passing the remaining elements as arguments to the system call. If unimplemented, raises an exception. The arguments are interpreted as follows: if a given argument is numeric, the argument is passed as an int. If not, the pointer to the string value is passed. You are responsible to make sure a string is pre-extended long enough to receive any result that might be written into a string. You can&#39;t use a string literal (or other read-only string) as an argument to <code>syscall</code> because Perl has to assume that any string pointer might be written through. If your integer arguments are not literals and have never been interpreted in a numeric context, you may need to add <code>0</code> to them to force them to look like numbers. This emulates the <code>syswrite</code> function (or vice versa):</p> <pre><code>require &#39;syscall.ph&#39;; # may need to run h2ph $s = &quot;hi there\n&quot;; syscall(&amp;SYS_write, fileno(STDOUT), $s, length $s);</code></pre> <p>Note that Perl supports passing of up to only 14 arguments to your syscall, which in practice should (usually) suffice.</p> <p>Syscall returns whatever value returned by the system call it calls. If the system call fails, <code>syscall</code> returns <code>-1</code> and sets <code>$!</code> (errno). Note that some system calls <i>can</i> legitimately return <code>-1</code>. The proper way to handle such calls is to assign <code>$!=0</code> before the call, then check the value of <code>$!</code> if <code>syscall</code> returns <code>-1</code>.</p> <p>There&#39;s a problem with <code>syscall(&amp;SYS_pipe)</code>: it returns the file number of the read end of the pipe it creates, but there is no way to retrieve the file number of the other end. You can avoid this problem by using <code>pipe</code> instead.</p> <p>Portability issues: <a href="/5.18.2/perlport#syscall">&quot;syscall&quot; in perlport</a>.</p> </dd> </dl> </div> <div id="footer"> <p>Perldoc Browser is maintained by Dan Book (<a href="https://metacpan.org/author/DBOOK">DBOOK</a>). Please contact him via the <a href="https://github.com/Grinnz/perldoc-browser/issues">GitHub issue tracker</a> or <a href="mailto:dbook@cpan.org">email</a> regarding any issues with the site itself, search, or rendering of documentation.</p> <p>The Perl documentation is maintained by the Perl 5 Porters in the development of Perl. Please contact them via the <a href="https://github.com/Perl/perl5/issues">Perl issue tracker</a>, the <a href="https://lists.perl.org/list/perl5-porters.html">mailing list</a>, or <a href="https://kiwiirc.com/client/irc.perl.org/p5p">IRC</a> to report any issues with the contents or format of the documentation.</p> </div> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.slim.min.js" integrity="sha512-/DXTXr6nQodMUiq+IUJYCt2PPOUjrHJ9wFrqpJ3XkgPNOZVfMok7cRw6CSxyCQxXn6ozlESsSh1/sMCTF1rL/g==" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js" integrity="sha512-ubuT8Z88WxezgSqf3RLuNi5lmjstiJcyezx34yIU2gAHonIi27Na7atqzUZCOoY4CExaoFumzOsFQ2Ch+I/HCw==" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous"></script> <script src="/js/highlight.pack.js"></script> <script>hljs.highlightAll();</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10