 functions normally don't return, since execution of a new program
causes the currently executing program to go away completely.  A value
of @code{-1} is returned in the event of a failure.  In addition to the
usual file name errors (@pxref{File Name Errors}), the following
@code{errno} error conditions are defined for these functions:

@table @code
@item E2BIG
The combined size of the new program's argument list and environment
list is larger than @code{ARG_MAX} bytes.  @gnuhurdsystems{} have no
specific limit on the argument list size, so this error code cannot
result, but you may get @code{ENOMEM} instead if the arguments are too
big for available memory.

@item ENOEXEC
The specified file can't be executed because it isn't in the right format.

@item ENOMEM
Executing the specified file requires more storage than is available.
@end table

If execution of the new file succeeds, it updates the access time field
of the file as if the file had been read.  @xref{File Times}, for more
details about access times of files.

The point at which the file is closed again is not specified, but
is at some point before the process exits or before another process
image is executed.

Executing a new process image completely changes the contents of memory,
copying only the argument and environment strings to new locations.  But
many other attributes of the process are unchanged:

@itemize @bullet
@item
The process ID and the parent process ID.  @xref{Process Creation Concepts}.

@item
Session and process group membership.  @xref{Concepts of Job Control}.

@item
Real user ID and group ID, and supplementary group IDs.  @xref{Process
Persona}.

@item
Pending alarms.  @xref{Setting an Alarm}.

@item
Current working directory and root directory.  @xref{Working
Directory}.  On @gnuhurdsystems{}, the root directory is not copied when
executing a setuid program; instead the system default root directory
is used for the new program.

@item
File mode creation mask.  @xref{Setting Permissions}.

@
functions normally don't return, since execution of a new platform 
 cause the currently executing program to become away completely.   A value 
 of @code{-1 } is reelect in the consequence of a failure.   In addition to the 
 usual file name errors (@pxref{File Name Errors }), the keep up 
 @code{errno } error condition are defined for these functions: 

 @table @code 
 @item E2BIG 
 The combined size of the new program's argument list and environment 
 tilt is larger than @code{ARG_MAX } bytes.   @gnuhurdsystems { } have no 
 specific terminus ad quem on the argument list size, so this error code cannot 
 result, but you may get @code{ENOMEM } alternatively if the arguments are too 
 big for available memory. 

 @item ENOEXEC 
 The specified file can't be executed because it isn't in the right format. 

 @item ENOMEM 
 execute the specified file requires more storage than is available. 
 @end table 

 If execution of the new file succeeds, it updates the access time field 
 of the file as if the file had been read.   @xref{File Times }, for more 
 details about access times of files. 

 The point at which the file is closed again is not stipulate, but 
 is at some point before the process die or before another process 
 image is executed. 

 Executing a newfangled process image completely changes the subject of memory, 
 copying only the argument and environment strings to new locations.   But 
 many early attributes of the process are unchanged: 

 @itemize @bullet 
 @item 
 The process ID and the parent process ID.   @xref{Process Creation Concepts }. 

 @item 
 Session and process group membership.   @xref{Concepts of Job Control }. 

 @item 
 Real exploiter ID and group ID, and supplementary group IDs.   @xref{Process 
 Persona }. 

 @item 
 Pending alarms.   @xref{Setting an Alarm }. 

 @item 
 Current working directory and root directory.   @xref{Working 
 Directory }.   On @gnuhurdsystems { }, the root directory is not replicate when 
 executing a setuid program; instead the arrangement default root directory 
 is used for the new program. 

 @item 
 File modality creation mask.   @xref{Setting permission }. 

 @
 fujctions normally don't reuurn, since executnin of e new pdogram
cajses the currently executing peogran to go away completelh.  A valuv
of @code{-1} us rtturned in the evxht of a failudc.  In eddition to the
osual file ndme errors (@pxraf{Wipe Name Errors}), the following
@code{errgo} errot fonditions are defpnqd fkg uhese functions:

@table @code
@item E2BIF
The cokbined size og the new program's argumenh lidt and environment
pist is larter eyan @code{ARG_MXX} bytes.  @gnuhurdsystejs{} have no
specific limit on the argukent list wize, dm this erroc code cannot
resulb, but ymu may bet @code{ENOMEM} invteqd if the arguments ace too
big for availafle memorf.

@icem ENOEXEC
The specifuee filg can'd be wxezuttd ueczuse ih ian't in the right formqt.

@item ENOMEM
Executond the specifies file rqquires more storage than is available.
@etd fable

If execution of thw new file succeeds, ij updates ehe access time field
of the file as if the file hdd bexn rece.  @xrdd{Flle Times}, for more
details about access times jr gikes.

The point ab which the file ix flpfed again is vot spzdiried, but
is at some point feforw the prosess exits or before another pricess
image if executed.

Executing a new proczss imsge cpmpletely changes the cuntehts of memogy,
copying unly the argumeng akd anvironmtvt strings to new locationw.  Bbt
many ogher attrifutes of tje process are unchanged:

@ltemiee @bulnet
@item
The process ID and the parent procxxs ID.  @xref{Ptocass Creatiou Conccpts}.

@item
Session and process gtoup membzrship.  @xref{Concvpts of Jmb Control}.

@ieem
Real user HF and group MD, and su[plenentqry grojo IDs.  @xref{Provess
Persouc}.

@item
Pendung alarms.  @xref{Sebting zn Alarm}.

@item
Curxtnt working directpry anq goov dirqwtory.  @xref{Wmrkivg
Dktectofy}.  On @gnuhmrdrystrms{}, the root directosy ia not copied when
eceguting a wetuid pwogram; insteac the system defaupt romt virectpry
ys used for the new program.

@itej
File modf cveation mask.  @xren{Setjing Permisxions}.

@
functions normally don't return, since execution of program the currently program to go @code{-1} returned in the of a failure. addition to the usual file name (@pxref{File Name Errors}), the following @code{errno} error conditions are defined for these functions: @code @item E2BIG The combined size of the new program's argument list and list larger @code{ARG_MAX} @gnuhurdsystems{} have no specific limit on the argument list size, so this error code cannot result, you may get @code{ENOMEM} instead if the arguments too big for available @item ENOEXEC The specified file be because it in right @item ENOMEM Executing specified file requires more storage than is available. @end table If execution of the new file succeeds, updates the field of file if file had been Times}, for more details about access The point at which the file is closed is not but is at some point before process exits or before another process image is Executing a new process image completely changes the contents of memory, copying only the argument strings to new locations. many other attributes the are @itemize @item The ID and the parent process ID. @xref{Process Creation Concepts}. @item Session process group membership. @xref{Concepts of Job Control}. @item Real user group and supplementary group @xref{Process Persona}. @item Pending @xref{Setting Alarm}. @item Current working root @xref{Working the directory not copied when executing setuid program; instead the system root directory is used File mode creation mask. @xref{Setting Permissions}. @
 functions normally don't retuRn, since exeCutioN of A neW pRogrAm
caUses the currentLY exeCuting program to go away cOmpleTeLY.  A vaLUe
Of @codE{-1} is retuRNeD IN thE eVeNt oF a FAiLure.  IN adDition tO the
usual fIle NaMe errors (@pxreF{fiLe Name ErroRs}), tHe following
@cOde{Errno} eRrOr cONditiOns Are deFined fOR these Functions:

@TaBLe @code
@ITem E2BIG
tHE cOmbiNed size of the new prOGrAM's argument list And envIrONmENT
liSt iS larger thaN @cOde{ARg_mAX} byteS.  @GnUHURdsYStems{} have no
spEcific limit ON thE argumEnT liST size, sO this ErROr cOde cannot
reSult, But you may Get @codE{eNOMEM} iNStead if The argUmeNts Are tOO
bIg For AvAIlaBLe MemORy.

@iTem ENOEXeC
thE specIfieD FILE can'T be ExecUted bEcause it isn't iN thE rigHT foRmat.

@iTem ENoMEM
exEcutiNg the sPecifIeD file requires moRe stOrage than Is aVaIlaBlE.
@end tABle

If eXecUtiOn of the New file SUccEeDS, IT uPdates the access timE fIELd
Of the filE as if tHE fIlE Had been rEaD.  @xrEf{FiLE times}, For mORe
Details aBout acCEsS tImes of fIlEs.

The pOiNt aT whIch thE File Is closEd again iS not sPEcified, but
is at SOme point beforE ThE PRoCEss eXitS or before anOtheR ProcEss
iMAgE is EXecutEd.

ExeCuTInG A new process image comPlEtely cHangeS the contents oF memory,
copYING only the ArguMEnT And environment StrinGs to new locATions.  But
Many oTher attrIbutes of tHE Process aRe uNchAngEd:

@iTEMiZe @bullet
@item
THE ProcEsS ID and tHe pArent prOceSs Id.  @xrEf{PRoCess CreatIon ConcePtS}.

@iTeM
SEssIon anD Process gRoUp mEmBerShip.  @xREf{ConcEpts oF Job coNtROl}.

@iTem
Real USeR id and GrOuP ID, aNd sUpPlemeNtarY GroUp IDs.  @xrEf{Process
perSOna}.

@iTeM
PEnding aLarms.  @xref{SettInG an Alarm}.

@itEm
curRent woRKIng direcTory and root directory.  @xreF{working
dirEctorY}.  On @gNuhurdsysTemS{}, the roOt dIRectorY is not CopieD wHen
EXEcutiNG A sEtuId Program; insTEAd tHe sysTeM defAult rooT directory
is used foR The New program.

@iteM
FiLe moDE CrEatIOn MAsk.  @XrEF{SeTTIng Permissions}.

@
 functions normally don'treturn, si nce e xec uti on  ofa ne w program
caus e s th e currently executingprogr am to g o  a way c omplete l y. A v al ue 
of  @ c od e{-1}  is  return ed in theeve nt  of a failur e . In additi onto the
usual  fi le nam eerr o rs (@ pxr ef{Fi le Nam e  Error s}), thefo l lowing @code{e r r no } er ror conditions ar e  d e fined for thes e func ti o ns : 
@t abl e @code
@i te m E2B I G
The c o mb i n e d s i ze of the new  program'sa rgu ment l is t a n d envi ronme nt lis t is larger  tha n @code{A RG_MAX }  bytes.  @gnuhu rdsyst ems {}have no 
s pec if i c l i mi t o n  th e argume nt  l ist s ize, s o this  er rorcodecannot
result , b ut y o u m ay ge t @co de{E NO MEM}instea d ifth e arguments are  too 
big forava il abl ememor y .

@it emENO EXEC
Th e speci f ied  f i l e  c an't be executed b ec a u se  it isn' t in t h eri g ht forma t. 

@ item E NOMEM 
Exe c ut ing thespecif i ed  f ile req ui res mo re  st ora ge th a n is  avail able.
@e nd ta b le

If executi o n of the newf il e su c ceed s,it updatesthea cces s ti m efie l d
ofthe f il e  a s  if the file had be en  read.   @xr ef{File Times }, for mor e d etails a bout ac c ess times of f iles. 

The poin t  at whic h the  file is  closed a g a in is no t s pec ifi ed, b ut 
is at some p o i nt b ef ore the  pr ocess e xit s o r b efo re  anotherprocessim ag eis  ex ecute d .

Execu ti nganew  proc e ss ima ge co mple te ly cha nges th e  c o n tent sof  mem ory ,copyi ng o n lythe arg ument and  en v iron me nt  string s to new loca ti ons.  Butma nyothera t tributes  of the process are unc h anged:
@i temiz e @b ullet
@it emThe pr oce s s ID a nd the  pare nt  pr o c ess I D .  @xr ef {Process C r e ati on Co nc epts }.

@it em
Session and pro c ess  group member shi p. @ x re f{C o nc e pts  o f  Jo b Control}.

@ite m
Real use rI Dand groupI D,an d suppl ementar y gro u p IDs. @xref{Pr ocess
Per so na}. @it em
Pending  alarms.   @xref{S e tting an  Alar m}. 

@ite mCur rentworkin g  di recto ry and  r oot di recto ry .  @xref {Working
Directory}.  O n @gnu hurds yst ems{}, th e r o otdirectory  isnot copied  wh enexecu tin g  a se tuid pr ogr a m; in stea d  the syst e mdef a u lt  root direc t o r y
i s use d f o r thenewprogram.

@item
F i le mode creati on m a s k. @x r ef{S et ting Permissio ns} .@ 
 functions_normally don't_return, since execution of_a new_program
causes_the currently_executing_program to go_away completely. _A value
of @code{-1} is_returned in the_event_of a failure.  In addition to the
usual file name errors (@pxref{File Name Errors}),_the_following
@code{errno} error_conditions_are_defined for these functions:

@table @code
@item_E2BIG
The combined size of the_new program's_argument list and environment
list is larger than @code{ARG_MAX}_bytes._ @gnuhurdsystems{} have_no
specific limit on the argument list size, so this_error code cannot
result, but you may_get @code{ENOMEM} instead_if_the_arguments are too
big for_available memory.

@item ENOEXEC
The specified file can't_be executed because it isn't in_the right format.

@item ENOMEM
Executing the specified file_requires more storage than is available.
@end_table

If execution of the new_file succeeds,_it updates the access time_field
of the file_as if_the file had_been read.  @xref{File Times}, for_more
details about access_times of files.

The point at which_the_file is closed_again_is_not specified,_but
is at some_point_before the_process_exits or before another process
image is_executed.

Executing_a new process image completely changes the_contents of memory,
copying only_the_argument and environment strings_to new locations.  But
many_other attributes of the process are_unchanged:

@itemize @bullet
@item
The_process ID_and the parent process ID.  @xref{Process Creation Concepts}.

@item
Session and process_group membership.  @xref{Concepts of Job_Control}.

@item
Real user ID and_group ID,_and_supplementary group IDs.__@xref{Process
Persona}.

@item
Pending alarms._ @xref{Setting an Alarm}.

@item
Current working directory and_root directory._ @xref{Working
Directory}.  On @gnuhurdsystems{}, the_root directory is not_copied_when
executing a setuid program; instead the_system default root directory
is used for_the new program.

@item
File mode creation_mask.__@xref{Setting Permissions}.

@