• Places
    • Home
    • Graphs
    • Prefixes
  • Admin
    • Users
    • Settings
    • Plugins
    • Statistics
  • Repository
    • Load local file
    • Load from HTTP
    • Load from library
    • Remove triples
    • Clear repository
    • RDF quality heuristics
  • Query
    • YASGUI SPARQL Editor
    • Simple Form
    • SWISH Prolog shell
  • Help
    • Documentation
    • Tutorial
    • Roadmap
    • HTTP Services
  • Login

/usr/lib/swipl/library/unix.pl
AllApplicationManualNameSummaryHelp

  • swipl
    • library
      • error.pl -- Error generating support
      • apply.pl -- Apply predicates on a list
      • lists.pl -- List Manipulation
      • debug.pl -- Print debug messages and test assertions
      • broadcast.pl -- Event service
      • socket.pl -- Network socket (TCP and UDP) library
      • predicate_options.pl -- Access and analyse predicate options
      • shlib.pl -- Utility library for loading foreign objects (DLLs, shared objects)
      • option.pl -- Option list processing
      • uid.pl -- User and group management on Unix systems
      • unix.pl -- Unix specific operations
        • fork/1
      • syslog.pl -- Unix syslog interface
      • thread_pool.pl -- Resource bounded thread management
      • gensym.pl -- Generate unique symbols
      • settings.pl -- Setting management
      • arithmetic.pl -- Extensible arithmetic
      • main.pl -- Provide entry point for scripts
      • readutil.pl -- Read utilities
      • ssl.pl -- Secure Socket Layer (SSL) library
      • crypto.pl -- Cryptography and authentication library
      • filesex.pl -- Extended operations on files
      • doc_http.pl -- Documentation server
      • pldoc.pl -- Process source documentation
      • operators.pl -- Manage operators
      • pairs.pl -- Operations on key-value lists
      • prolog_source.pl -- Examine Prolog source-files
      • sgml.pl -- SGML, XML and HTML parser
      • quasi_quotations.pl -- Define Quasi Quotation syntax
      • uri.pl -- Process URIs
      • url.pl -- Analysing and constructing URL
      • www_browser.pl -- Open a URL in the users browser
      • prolog_colour.pl -- Prolog syntax colouring support.
      • record.pl -- Access compound arguments by name
      • prolog_xref.pl -- Prolog cross-referencer data collection
      • occurs.pl -- Finding and counting sub-terms
      • ordsets.pl -- Ordered set manipulation
      • assoc.pl -- Binary associations
      • ugraphs.pl -- Graph manipulation library
      • xpath.pl -- Select nodes in an XML DOM
      • iostream.pl -- Utilities to deal with streams
      • atom.pl -- Operations on atoms
      • porter_stem.pl
      • solution_sequences.pl -- Modify solution sequences
      • prolog_pack.pl -- A package manager for Prolog
      • process.pl -- Create processes and redirect I/O
      • memfile.pl
      • prolog_config.pl -- Provide configuration information
      • git.pl -- Run GIT commands
      • ctypes.pl -- Character code classification
      • time.pl -- Time and alarm library
      • utf8.pl -- UTF-8 encoding/decoding on lists of character codes.
      • base64.pl -- Base64 encoding and decoding
      • sha.pl -- SHA secure hashes
      • crypt.pl
      • persistency.pl -- Provide persistent dynamic predicates
      • pure_input.pl -- Pure Input from files and streams
      • nb_set.pl -- Non-backtrackable sets
      • xsdp_types.pl -- XML-Schema primitive types
      • uuid.pl -- Universally Unique Identifier (UUID) Library
      • pcre.pl -- Perl compatible regular expression matching for SWI-Prolog
      • aggregate.pl -- Aggregation operators on backtrackable predicates
      • rdf_write.pl -- Write RDF/XML from a list of triples
      • rdf.pl -- RDF/XML parser
      • sgml_write.pl -- XML/SGML writer module
      • archive.pl -- Access several archive formats
      • csv.pl -- Process CSV (Comma-Separated Values) data
      • dialect.pl -- Support multiple Prolog dialects
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • pengines.pl -- Pengines: Web Logic Programming Made Easy
      • random.pl -- Random numbers
      • zlib.pl -- Zlib wrapper for SWI-Prolog
      • bdb.pl -- Berkeley DB interface
      • hash_stream.pl -- Maintain a hash on a stream
      • md5.pl -- MD5 hashes
      • sandbox.pl -- Sandboxed Prolog code
      • prolog_format.pl -- Analyse format specifications
      • pprint.pl -- Pretty Print Prolog terms
      • lazy_lists.pl -- Lazy list handling
      • pengines_io.pl -- Provide Prolog I/O for HTML clients
      • yall.pl -- Lambda expressions
      • edinburgh.pl -- Some traditional Edinburgh predicates
      • prolog_clause.pl -- Get detailed source-information about a clause
      • prolog_breakpoints.pl -- Manage Prolog break-points
      • dicts.pl -- Dict utilities
      • dif.pl -- The dif/2 constraint
      • thread.pl -- High level thread primitives
      • rbtrees.pl -- Red black trees
      • nb_rbtrees.pl -- Non-backtrackable operations on red black trees
      • mallocinfo.pl -- Memory allocation details
      • snowball.pl -- The Snowball multi-lingual stemmer library
      • date.pl -- Process dates and times
      • rdf_triple.pl -- Create triples from intermediate representation
      • rdf_parser.pl
      • rewrite_term.pl
      • oset.pl -- Ordered set manipulation
      • modules.pl -- Module utility predicates
      • base32.pl -- Base32 encoding and decoding
      • charsio.pl -- I/O on Lists of Character Codes
      • codesio.pl -- I/O on Lists of Character Codes
      • coinduction.pl -- Co-Logic Programming
      • heaps.pl -- heaps/priority queues
      • sort.pl
      • statistics.pl -- Get information about resource usage
      • terms.pl -- Term manipulation
      • varnumbers.pl -- Utilities for numbered terms
      • when.pl -- Conditional coroutining
      • backcomp.pl -- Backward compatibility
      • intercept.pl -- Intercept and signal interface
      • prolog_code.pl -- Utilities for reasoning about code
      • yaml.pl -- Process YAML data
      • shell.pl -- Elementary shell commands
      • quintus.pl -- Quintus compatibility
      • listing.pl -- List programs and pretty print clauses
      • redis_streams.pl -- Using Redis streams
      • redis.pl -- Redis client
      • doc_latex.pl -- PlDoc LaTeX backend
      • strings.pl -- String utilities
      • make.pl -- Reload modified source files
      • term_to_json.pl
      • check.pl -- Consistency checking
      • ansi_term.pl -- Print decorated text to ANSI consoles
      • prolog_codewalk.pl -- Prolog code walker
      • prolog_metainference.pl -- Infer meta-predicate properties
      • paxos.pl -- A Replicated Data Store
      • odbc.pl
      • editline.pl -- BSD libedit based command line editing
      • edit.pl -- Editor interface
      • unicode.pl -- Unicode string handling
      • double_metaphone.pl -- Phonetic string matching
      • plunit.pl -- Unit Testing
      • test_cover.pl -- Clause cover analysis
      • wfs.pl -- Well Founded Semantics interface
      • doc_files.pl -- Create stand-alone documentation files
      • readline.pl -- GNU readline interface
      • files.pl
      • streampool.pl -- Input multiplexing
      • udp_broadcast.pl -- A UDP broadcast proxy
      • cgi.pl -- Read CGI parameters
      • table.pl
      • qsave.pl -- Save current program as a state or executable
      • zip.pl -- Access resource ZIP archives
      • writef.pl -- Old-style formatted write
      • protobufs.pl -- Google's Protocol Buffers
      • threadutil.pl -- Interactive thread utilities
 fork(-Pid) is det
Clone the current process into two branches. In the child, Pid is unified to child. In the original process, Pid is unified to the process identifier of the created child. Both parent and child are fully functional Prolog processes running the same program. The processes share open I/O streams that refer to Unix native streams, such as files, sockets and pipes. Data is not shared, though on most Unix systems data is initially shared and duplicated only if one of the programs attempts to modify the data.

Unix fork() is the only way to create new processes and fork/1 is a simple direct interface to it.

Errors
- permission_error(fork, process, main) is raised if the calling thread is not the only thread in the process. Forking a Prolog process with threads will typically deadlock because only the calling thread is cloned in the fork, while all thread synchronization are cloned.
ClioPatria (version V3.1.1-40-g9d9e003)