1<Type Name="UnixEnvironment" FullName="Mono.Unix.UnixEnvironment">
2  <TypeSignature Language="C#" Value="public sealed class UnixEnvironment" />
3  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit UnixEnvironment extends System.Object" />
4  <AssemblyInfo>
5    <AssemblyName>Mono.Posix</AssemblyName>
6    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
7    <AssemblyVersion>2.0.0.0</AssemblyVersion>
8    <AssemblyVersion>4.0.0.0</AssemblyVersion>
9  </AssemblyInfo>
10  <ThreadingSafetyStatement>This type is safe for multithreaded operations.</ThreadingSafetyStatement>
11  <Base>
12    <BaseTypeName>System.Object</BaseTypeName>
13  </Base>
14  <Interfaces />
15  <Docs>
16    <summary>Provides the current settings for, and information about, the
17      execution environment.</summary>
18    <remarks>
19      <para>
20        Use this class to retrieve the following information:
21      </para>
22      <list type="bullet">
23        <item>
24          <term>
25          User and Group information
26        </term>
27        </item>
28        <item>
29          <term>
30          Session creation
31        </term>
32        </item>
33        <item>
34          <term>
35          Process group creation
36        </term>
37        </item>
38        <item>
39          <term>
40          Configuration value lookup
41        </term>
42        </item>
43        <item>
44          <term>
45          Supplementary group information
46        </term>
47        </item>
48      </list>
49    </remarks>
50  </Docs>
51  <Members>
52    <Member MemberName="CreateSession">
53      <MemberSignature Language="C#" Value="public static int CreateSession ();" />
54      <MemberSignature Language="ILAsm" Value=".method public static hidebysig int32 CreateSession() cil managed" />
55      <MemberType>Method</MemberType>
56      <AssemblyInfo>
57        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
58        <AssemblyVersion>2.0.0.0</AssemblyVersion>
59        <AssemblyVersion>4.0.0.0</AssemblyVersion>
60      </AssemblyInfo>
61      <ReturnValue>
62        <ReturnType>System.Int32</ReturnType>
63      </ReturnValue>
64      <Parameters />
65      <Docs>
66        <summary>Create a new session.</summary>
67        <returns>
68          A <see cref="T:System.Int32" /> containing the return value of the
69          <see cref="M:Mono.Unix.Native.Syscall.setsid" /> call.  This can be
70          ignored, since it will be translated into an exception if it's an
71          error anyway.
72        </returns>
73        <remarks>
74          <para>
75            This method creates a new session.  The calling process is the
76            session leader of the new session, is the process group leader of
77            a new process group and has no controlling terminal.  The calling
78            process is the only process in either the session or the process
79            group.
80          </para>
81        </remarks>
82        <exception cref="System.InvalidOperationException">
83          <para>
84            The calling process is already a process group leader, or the
85            process group ID of a process other than the calling process
86            matches the process ID of the calling process.
87            [<see cref="F:Mono.Unix.Native.Errno.EPERM" />]
88          </para>
89        </exception>
90        <altmember cref="M:Mono.Unix.Native.Syscall.setsid" />
91      </Docs>
92    </Member>
93    <Member MemberName="CurrentDirectory">
94      <MemberSignature Language="C#" Value="public static string CurrentDirectory { get; set; }" />
95      <MemberSignature Language="ILAsm" Value=".property string CurrentDirectory" />
96      <MemberType>Property</MemberType>
97      <AssemblyInfo>
98        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
99        <AssemblyVersion>2.0.0.0</AssemblyVersion>
100        <AssemblyVersion>4.0.0.0</AssemblyVersion>
101      </AssemblyInfo>
102      <ReturnValue>
103        <ReturnType>System.String</ReturnType>
104      </ReturnValue>
105      <Docs>
106        <summary>Gets or sets the current directory of the process.</summary>
107        <value>
108          A <see cref="T:System.String" /> containing the current directory of
109          the process.
110        </value>
111        <remarks>
112          <para>The <paramref name="value" /> argument is permitted to specify
113          relative or absolute path information. Relative path information is
114          interpreted as relative to the current working directory.
115          <block subset="none" type="note">To obtain the current working
116          directory, see
117          <see cref="M:Mono.Unix.UnixDirectoryInfo.GetCurrentDirectory" qualify="true" />.
118          </block></para>
119        </remarks>
120        <exception cref="T:System.UnauthorizedAccessException">
121          Permission to read or search a component of the current working
122          directory was denied.
123          [<see cref="F:Mono.Unix.Native.Errno.EACCESS" />]
124        </exception>
125        <exception cref="T:System.IO.FileNotFoundException">
126          The current working directory has been unlinked.
127          [<see cref="F:Mono.Unix.Native.Errno.ENOENT" />]
128        </exception>
129        <altmember cref="M:Mono.Unix.UnixDirectoryInfo.GetCurrentDirectory" />
130        <altmember cref="M:Mono.Unix.UnixDirectoryInfo.SetCurrentDirectory" />
131      </Docs>
132    </Member>
133    <Member MemberName="EffectiveGroup">
134      <MemberSignature Language="C#" Value="public static Mono.Unix.UnixGroupInfo EffectiveGroup { get; set; }" />
135      <MemberSignature Language="ILAsm" Value=".property class Mono.Unix.UnixGroupInfo EffectiveGroup" />
136      <MemberType>Property</MemberType>
137      <AssemblyInfo>
138        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
139        <AssemblyVersion>2.0.0.0</AssemblyVersion>
140        <AssemblyVersion>4.0.0.0</AssemblyVersion>
141      </AssemblyInfo>
142      <ReturnValue>
143        <ReturnType>Mono.Unix.UnixGroupInfo</ReturnType>
144      </ReturnValue>
145      <Docs>
146        <summary>Gets information about the effective group of the process.</summary>
147        <value>
148          A <see cref="T:Mono.Unix.UnixGroupInfo" /> containing information
149          about the effective group of the process.
150        </value>
151        <remarks>
152          <para>
153            The
154            <see cref="P:Mono.Unix.UnixEnvironment.EffectiveGroup" />
155            gives the process additional permissions during the execution of
156            <see cref="F:Mono.Unix.FileSpecialAttributes.SetGroupId" />
157            mode processes.
158          </para>
159        </remarks>
160        <altmember cref="M:Mono.Unix.UnixEnvironment.EffectiveUser" />
161        <altmember cref="M:Mono.Unix.UnixEnvironment.RealGroup" />
162        <altmember cref="M:Mono.Unix.UnixEnvironment.RealUser" />
163        <altmember cref="M:Mono.Unix.Native.Syscall.getegid" />
164      </Docs>
165    </Member>
166    <Member MemberName="EffectiveGroupId">
167      <MemberSignature Language="C#" Value="public static long EffectiveGroupId { get; set; }" />
168      <MemberSignature Language="ILAsm" Value=".property int64 EffectiveGroupId" />
169      <MemberType>Property</MemberType>
170      <AssemblyInfo>
171        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
172        <AssemblyVersion>2.0.0.0</AssemblyVersion>
173        <AssemblyVersion>4.0.0.0</AssemblyVersion>
174      </AssemblyInfo>
175      <ReturnValue>
176        <ReturnType>System.Int64</ReturnType>
177      </ReturnValue>
178      <Docs>
179        <summary>Gets the effective group ID of the process.</summary>
180        <value>
181          A <see cref="T:System.Int64" /> containing nthe effective group ID
182          of the process.
183        </value>
184        <remarks>
185          <para>
186            The
187            <see cref="P:Mono.Unix.UnixEnvironment.EffectiveGroupId" />
188            gives the process additional permissions during the execution of
189            <see cref="F:Mono.Unix.FileSpecialAttributes.SetGroupId" />
190            mode processes.
191          </para>
192        </remarks>
193        <altmember cref="M:Mono.Unix.UnixEnvironment.EffectiveUserId" />
194        <altmember cref="M:Mono.Unix.UnixEnvironment.RealGroupId" />
195        <altmember cref="M:Mono.Unix.UnixEnvironment.RealUserId" />
196        <altmember cref="M:Mono.Unix.Native.Syscall.getegid" />
197      </Docs>
198    </Member>
199    <Member MemberName="EffectiveUser">
200      <MemberSignature Language="C#" Value="public static Mono.Unix.UnixUserInfo EffectiveUser { get; set; }" />
201      <MemberSignature Language="ILAsm" Value=".property class Mono.Unix.UnixUserInfo EffectiveUser" />
202      <MemberType>Property</MemberType>
203      <AssemblyInfo>
204        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
205        <AssemblyVersion>2.0.0.0</AssemblyVersion>
206        <AssemblyVersion>4.0.0.0</AssemblyVersion>
207      </AssemblyInfo>
208      <ReturnValue>
209        <ReturnType>Mono.Unix.UnixUserInfo</ReturnType>
210      </ReturnValue>
211      <Docs>
212        <summary>Gets information about the effective user of the process.</summary>
213        <value>
214          A <see cref="T:Mono.Unix.UnixUserInfo" /> containing information
215          about the effective user of the process.
216        </value>
217        <remarks>
218          <para>
219            The
220            <see cref="P:Mono.Unix.UnixEnvironment.EffectiveUser" /> gives
221            the process additional permissions during execution of
222            <see cref="F:Mono.Unix.FileSpecialAttributes.SetUserId" />
223            mode processes.
224          </para>
225        </remarks>
226        <altmember cref="M:Mono.Unix.UnixEnvironment.EffectiveGroup" />
227        <altmember cref="M:Mono.Unix.UnixEnvironment.RealGroup" />
228        <altmember cref="M:Mono.Unix.UnixEnvironment.RealUser" />
229        <altmember cref="M:Mono.Unix.Native.Syscall.geteuid" />
230      </Docs>
231    </Member>
232    <Member MemberName="EffectiveUserId">
233      <MemberSignature Language="C#" Value="public static long EffectiveUserId { get; set; }" />
234      <MemberSignature Language="ILAsm" Value=".property int64 EffectiveUserId" />
235      <MemberType>Property</MemberType>
236      <AssemblyInfo>
237        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
238        <AssemblyVersion>2.0.0.0</AssemblyVersion>
239        <AssemblyVersion>4.0.0.0</AssemblyVersion>
240      </AssemblyInfo>
241      <ReturnValue>
242        <ReturnType>System.Int64</ReturnType>
243      </ReturnValue>
244      <Docs>
245        <summary>Gets the effective user ID of the process.</summary>
246        <value>
247          A <see cref="T:System.Int64" /> containing the effective user ID of
248          the process.
249        </value>
250        <remarks>
251          <para>
252            The
253            <see cref="P:Mono.Unix.UnixEnvironment.EffectiveUserId" /> gives
254            the process additional permissions during execution of
255            <see cref="F:Mono.Unix.FileSpecialAttributes.SetUserId" />
256            mode processes.
257          </para>
258        </remarks>
259        <altmember cref="M:Mono.Unix.UnixEnvironment.EffectiveGroupId" />
260        <altmember cref="M:Mono.Unix.UnixEnvironment.RealGroupId" />
261        <altmember cref="M:Mono.Unix.UnixEnvironment.RealUserId" />
262        <altmember cref="M:Mono.Unix.Native.Syscall.geteuid" />
263      </Docs>
264    </Member>
265    <Member MemberName="GetConfigurationString">
266      <MemberSignature Language="C#" Value="public static string GetConfigurationString (Mono.Unix.Native.ConfstrName name);" />
267      <MemberSignature Language="ILAsm" Value=".method public static hidebysig string GetConfigurationString(valuetype Mono.Unix.Native.ConfstrName name) cil managed" />
268      <MemberType>Method</MemberType>
269      <AssemblyInfo>
270        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
271        <AssemblyVersion>2.0.0.0</AssemblyVersion>
272        <AssemblyVersion>4.0.0.0</AssemblyVersion>
273      </AssemblyInfo>
274      <Attributes>
275        <Attribute>
276          <AttributeName>System.CLSCompliant(false)</AttributeName>
277        </Attribute>
278      </Attributes>
279      <ReturnValue>
280        <ReturnType>System.String</ReturnType>
281      </ReturnValue>
282      <Parameters>
283        <Parameter Name="name" Type="Mono.Unix.Native.ConfstrName" />
284      </Parameters>
285      <Docs>
286        <param name="name">
287          A <see cref="T:Mono.Unix.Native.ConfstrName" /> value containing the
288          configuration value to retrieve.
289        </param>
290        <summary>
291          Retrieve the value of the configuration value
292          <paramref name="name" />.
293        </summary>
294        <returns>
295          A <see cref="T:System.String" /> containing the value of the
296          configuration variable <paramref name="name" />.
297        </returns>
298        <remarks>
299        </remarks>
300        <exception cref="System.ArgumentException">
301          <para>
302            The value of the
303            <paramref name="name" />
304            argument is invalid.
305            [<see cref="F:Mono.Unix.Native.Errno.EINVAL" />]
306          </para>
307        </exception>
308        <altmember cref="M:Mono.Unix.Native.Syscall.confstr" />
309      </Docs>
310    </Member>
311    <Member MemberName="GetConfigurationValue">
312      <MemberSignature Language="C#" Value="public static long GetConfigurationValue (Mono.Unix.Native.SysconfName name);" />
313      <MemberSignature Language="ILAsm" Value=".method public static hidebysig int64 GetConfigurationValue(valuetype Mono.Unix.Native.SysconfName name) cil managed" />
314      <MemberType>Method</MemberType>
315      <AssemblyInfo>
316        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
317        <AssemblyVersion>2.0.0.0</AssemblyVersion>
318        <AssemblyVersion>4.0.0.0</AssemblyVersion>
319      </AssemblyInfo>
320      <Attributes>
321        <Attribute>
322          <AttributeName>System.CLSCompliant(false)</AttributeName>
323        </Attribute>
324      </Attributes>
325      <ReturnValue>
326        <ReturnType>System.Int64</ReturnType>
327      </ReturnValue>
328      <Parameters>
329        <Parameter Name="name" Type="Mono.Unix.Native.SysconfName" />
330      </Parameters>
331      <Docs>
332        <param name="name">
333          A <see cref="T:Mono.Unix.Native.SysconfName" /> value containing the
334          configurable system limit or option variable to lookup.
335        </param>
336        <summary>
337          Retrieve the value of the configurable system limit or
338          option value <paramref name="name" />.
339        </summary>
340        <returns>
341          A <see cref="T:System.Int64" /> containing the value of the
342          configurable system limit or option value <paramref name="name" />.
343        </returns>
344        <remarks>
345          <para>
346            This method provides a way for applications to determine the
347            current value of a configurable system limit or option variable.
348            The <paramref name="name" /> argument specifies the system
349            variable to be queried.
350          </para>
351        </remarks>
352        <exception cref="System.ArgumentException">
353          <para>
354            The value of the
355            <paramref name="name" />
356            argument is invalid.
357            [<see cref="F:Mono.Unix.Native.Errno.EINVAL" />]
358          </para>
359        </exception>
360        <altmember cref="M:Mono.Unix.Native.Syscall.sysconf" />
361      </Docs>
362    </Member>
363    <Member MemberName="GetParentProcess">
364      <MemberSignature Language="C#" Value="public static Mono.Unix.UnixProcess GetParentProcess ();" />
365      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Unix.UnixProcess GetParentProcess() cil managed" />
366      <MemberType>Method</MemberType>
367      <AssemblyInfo>
368        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
369        <AssemblyVersion>2.0.0.0</AssemblyVersion>
370        <AssemblyVersion>4.0.0.0</AssemblyVersion>
371      </AssemblyInfo>
372      <ReturnValue>
373        <ReturnType>Mono.Unix.UnixProcess</ReturnType>
374      </ReturnValue>
375      <Parameters />
376      <Docs>
377        <summary>Gets information about the parent process.</summary>
378        <returns>
379          A <see cref="T:Mono.Unix.UnixProcess" /> instance containing
380          information about the parent process.
381        </returns>
382        <remarks>
383        </remarks>
384      </Docs>
385    </Member>
386    <Member MemberName="GetParentProcessId">
387      <MemberSignature Language="C#" Value="public static int GetParentProcessId ();" />
388      <MemberSignature Language="ILAsm" Value=".method public static hidebysig int32 GetParentProcessId() cil managed" />
389      <MemberType>Method</MemberType>
390      <AssemblyInfo>
391        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
392        <AssemblyVersion>2.0.0.0</AssemblyVersion>
393        <AssemblyVersion>4.0.0.0</AssemblyVersion>
394      </AssemblyInfo>
395      <ReturnValue>
396        <ReturnType>System.Int32</ReturnType>
397      </ReturnValue>
398      <Parameters />
399      <Docs>
400        <summary>Gets the process ID of the parent process.</summary>
401        <returns>
402          A <see cref="T:System.Int32" /> containing the process ID of the
403          parent process.
404        </returns>
405        <remarks>
406        </remarks>
407        <altmember cref="M:Mono.Unix.Native.Syscall.getppid" />
408      </Docs>
409    </Member>
410    <Member MemberName="GetProcessGroup">
411      <MemberSignature Language="C#" Value="public static int GetProcessGroup ();" />
412      <MemberSignature Language="ILAsm" Value=".method public static hidebysig int32 GetProcessGroup() cil managed" />
413      <MemberType>Method</MemberType>
414      <AssemblyInfo>
415        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
416        <AssemblyVersion>2.0.0.0</AssemblyVersion>
417        <AssemblyVersion>4.0.0.0</AssemblyVersion>
418      </AssemblyInfo>
419      <ReturnValue>
420        <ReturnType>System.Int32</ReturnType>
421      </ReturnValue>
422      <Parameters />
423      <Docs>
424        <summary>Gets the process group ID of the current process.</summary>
425        <returns>
426          A <see cref="T:System.Int32" /> containing the process group ID of
427          the current process.
428        </returns>
429        <remarks>
430          <para>
431            Process groups are used for distribution of signals, and by
432            terminals to arbitrate requests for their input: processes that
433            have the same process group as the terminal are foreground and
434            may read, while others will block with a signal if they attempt
435            to read.
436          </para>
437          <para>
438            This system call is thus used by programs such as <c>csh</c>(1)
439            to create process groups in implementing job control.  The
440            <see cref="M:Mono.Unix.Native.Syscall.tcgetpgrp" />() and
441            <see cref="M:Mono.Unix.Native.Syscall.tcsetpgrp" />()
442            calls are used to get/set the process group of the control terminal.
443          </para>
444        </remarks>
445        <altmember cref="M:Mono.Unix.Native.Syscall.getpgrp" />
446      </Docs>
447    </Member>
448    <Member MemberName="GetSupplementaryGroupIds">
449      <MemberSignature Language="C#" Value="public static long[] GetSupplementaryGroupIds ();" />
450      <MemberSignature Language="ILAsm" Value=".method public static hidebysig int64[] GetSupplementaryGroupIds() cil managed" />
451      <MemberType>Method</MemberType>
452      <AssemblyInfo>
453        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
454        <AssemblyVersion>2.0.0.0</AssemblyVersion>
455        <AssemblyVersion>4.0.0.0</AssemblyVersion>
456      </AssemblyInfo>
457      <ReturnValue>
458        <ReturnType>System.Int64[]</ReturnType>
459      </ReturnValue>
460      <Parameters />
461      <Docs>
462        <summary>Gets the current group access list.</summary>
463        <returns>
464          A <see cref="T:System.Int64" /> array containing the group access
465          list of the current process.
466        </returns>
467        <remarks>
468          <para>
469            The group access list is a list of groups which the current
470            process belongs to.  These groups are used for file access checks
471            when the
472            <see cref="P:Mono.Unix.UnixEnvironment.RealUser" /> is not the
473            file's
474            <see cref="P:Mono.Unix.UnixFileSystemInfo.OwnerUser" />; each of
475            the supplementary groups is checked against
476            <see cref="P:Mono.Unix.UnixFileSystemInfo.OwnerGroup" /> to see if
477            group access applies, before using the  "other"
478            <see cref="P:Mono.Unix.UnixFileSystemInfo.FileAccessPermissions" />.
479          </para>
480        </remarks>
481        <altmember cref="M:Mono.Unix.Native.Syscall.getgroups" />
482      </Docs>
483    </Member>
484    <Member MemberName="GetSupplementaryGroups">
485      <MemberSignature Language="C#" Value="public static Mono.Unix.UnixGroupInfo[] GetSupplementaryGroups ();" />
486      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Unix.UnixGroupInfo[] GetSupplementaryGroups() cil managed" />
487      <MemberType>Method</MemberType>
488      <AssemblyInfo>
489        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
490        <AssemblyVersion>2.0.0.0</AssemblyVersion>
491        <AssemblyVersion>4.0.0.0</AssemblyVersion>
492      </AssemblyInfo>
493      <ReturnValue>
494        <ReturnType>Mono.Unix.UnixGroupInfo[]</ReturnType>
495      </ReturnValue>
496      <Parameters />
497      <Docs>
498        <summary>Gets the current group access list.</summary>
499        <returns>
500          A <see cref="T:Mono.Unix.UnixGroupInfo" /> array containing
501          information about the group access list of the current process.
502        </returns>
503        <remarks>
504          <para>
505            The group access list is a list of groups which the current
506            process belongs to.  These groups are used for file access checks
507            when the
508            <see cref="P:Mono.Unix.UnixEnvironment.RealUser" /> is not the
509            file's
510            <see cref="P:Mono.Unix.UnixFileSystemInfo.OwnerUser" />; each of
511            the supplementary groups is checked against
512            <see cref="P:Mono.Unix.UnixFileSystemInfo.OwnerGroup" /> to see if
513            group access applies, before using the  "other"
514            <see cref="P:Mono.Unix.UnixFileSystemInfo.FileAccessPermissions" />.
515          </para>
516        </remarks>
517        <altmember cref="M:Mono.Unix.Native.Syscall.getgroups" />
518      </Docs>
519    </Member>
520    <Member MemberName="GetUserShells">
521      <MemberSignature Language="C#" Value="public static string[] GetUserShells ();" />
522      <MemberSignature Language="ILAsm" Value=".method public static hidebysig string[] GetUserShells() cil managed" />
523      <MemberType>Method</MemberType>
524      <AssemblyInfo>
525        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
526        <AssemblyVersion>2.0.0.0</AssemblyVersion>
527        <AssemblyVersion>4.0.0.0</AssemblyVersion>
528      </AssemblyInfo>
529      <ReturnValue>
530        <ReturnType>System.String[]</ReturnType>
531      </ReturnValue>
532      <Parameters />
533      <Docs>
534        <summary>Gets all user shells.</summary>
535        <returns>
536          A <see cref="T:System.String" /> array containing all user shells on
537          the system.
538        </returns>
539        <remarks>
540          <para>
541            A user shell is defined by the system manager in the shells
542            database as described in <c>shells</c>(5) (frequently the file
543            <c>/etc/shells</c>).  If the shells database is not available,
544            then this returns an array containing the elements <c>/bin/sh</c>
545            and <c>/bin/csh</c>.
546          </para>
547        </remarks>
548        <altmember cref="M:Mono.Unix.Native.Syscall.setusershell" />
549        <altmember cref="M:Mono.Unix.Native.Syscall.getusershell" />
550        <altmember cref="M:Mono.Unix.Native.Syscall.endusershell" />
551      </Docs>
552    </Member>
553    <Member MemberName="Login">
554      <MemberSignature Language="C#" Value="public static string Login { get; }" />
555      <MemberSignature Language="ILAsm" Value=".property string Login" />
556      <MemberType>Property</MemberType>
557      <AssemblyInfo>
558        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
559        <AssemblyVersion>2.0.0.0</AssemblyVersion>
560        <AssemblyVersion>4.0.0.0</AssemblyVersion>
561      </AssemblyInfo>
562      <ReturnValue>
563        <ReturnType>System.String</ReturnType>
564      </ReturnValue>
565      <Docs>
566        <summary>Gets the login name.</summary>
567        <value>
568          A <see cref="T:System.String" /> containing the login name of the
569          user executing the process.
570        </value>
571        <remarks>
572          <para>
573            This is identical to
574            <see cref="P:Mono.Unix.UnixEnvironment.UserName" />.
575          </para>
576        </remarks>
577      </Docs>
578    </Member>
579    <Member MemberName="MachineName">
580      <MemberSignature Language="C#" Value="public static string MachineName { get; set; }" />
581      <MemberSignature Language="ILAsm" Value=".property string MachineName" />
582      <MemberType>Property</MemberType>
583      <AssemblyInfo>
584        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
585        <AssemblyVersion>2.0.0.0</AssemblyVersion>
586        <AssemblyVersion>4.0.0.0</AssemblyVersion>
587      </AssemblyInfo>
588      <ReturnValue>
589        <ReturnType>System.String</ReturnType>
590      </ReturnValue>
591      <Docs>
592        <summary>Gets or sets the machine name of the machine the process is
593          running on.</summary>
594        <value>
595          A <see cref="T:System.String" /> containing the machine name.
596        </value>
597        <remarks>
598          <para>
599            Only the super-user can change the machine name.
600          </para>
601        </remarks>
602        <exception cref="System.InvalidOperationException">
603          <para>
604            The caller tried to set the host name and was not the super-user.
605            [<see cref="F:Mono.Unix.Native.Errno.EPERM" />]
606          </para>
607        </exception>
608        <altmember cref="M:Mono.Unix.Native.Syscall.gethostname" />
609        <altmember cref="M:Mono.Unix.Native.Syscall.sethostname" />
610      </Docs>
611    </Member>
612    <Member MemberName="RealGroup">
613      <MemberSignature Language="C#" Value="public static Mono.Unix.UnixGroupInfo RealGroup { get; }" />
614      <MemberSignature Language="ILAsm" Value=".property class Mono.Unix.UnixGroupInfo RealGroup" />
615      <MemberType>Property</MemberType>
616      <AssemblyInfo>
617        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
618        <AssemblyVersion>2.0.0.0</AssemblyVersion>
619        <AssemblyVersion>4.0.0.0</AssemblyVersion>
620      </AssemblyInfo>
621      <ReturnValue>
622        <ReturnType>Mono.Unix.UnixGroupInfo</ReturnType>
623      </ReturnValue>
624      <Docs>
625        <summary>Gets information about the real group of the process.</summary>
626        <value>
627          A <see cref="T:Mono.Unix.UnixGroupInfo" /> containing information
628          about the real group of the process.
629        </value>
630        <remarks>
631          <para>
632            The real group is the group of the user who invoked the program.
633          </para>
634        </remarks>
635        <altmember cref="M:Mono.Unix.UnixEnvironment.EffectiveGroup" />
636        <altmember cref="M:Mono.Unix.UnixEnvironment.EffectiveUser" />
637        <altmember cref="M:Mono.Unix.UnixEnvironment.RealUser" />
638        <altmember cref="M:Mono.Unix.Native.Syscall.getgid" />
639      </Docs>
640    </Member>
641    <Member MemberName="RealGroupId">
642      <MemberSignature Language="C#" Value="public static long RealGroupId { get; }" />
643      <MemberSignature Language="ILAsm" Value=".property int64 RealGroupId" />
644      <MemberType>Property</MemberType>
645      <AssemblyInfo>
646        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
647        <AssemblyVersion>2.0.0.0</AssemblyVersion>
648        <AssemblyVersion>4.0.0.0</AssemblyVersion>
649      </AssemblyInfo>
650      <ReturnValue>
651        <ReturnType>System.Int64</ReturnType>
652      </ReturnValue>
653      <Docs>
654        <summary>Gets the real group ID of the process.</summary>
655        <value>
656          A <see cref="T:System.Int64" /> containing the real group ID of the
657          process.
658        </value>
659        <remarks>
660          <para>
661            The real group ID is the group of the user who invoked the program.
662          </para>
663        </remarks>
664        <altmember cref="M:Mono.Unix.UnixEnvironment.EffectiveGroupId" />
665        <altmember cref="M:Mono.Unix.UnixEnvironment.EffectiveUserId" />
666        <altmember cref="M:Mono.Unix.UnixEnvironment.RealUserId" />
667        <altmember cref="M:Mono.Unix.Native.Syscall.getgid" />
668      </Docs>
669    </Member>
670    <Member MemberName="RealUser">
671      <MemberSignature Language="C#" Value="public static Mono.Unix.UnixUserInfo RealUser { get; }" />
672      <MemberSignature Language="ILAsm" Value=".property class Mono.Unix.UnixUserInfo RealUser" />
673      <MemberType>Property</MemberType>
674      <AssemblyInfo>
675        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
676        <AssemblyVersion>2.0.0.0</AssemblyVersion>
677        <AssemblyVersion>4.0.0.0</AssemblyVersion>
678      </AssemblyInfo>
679      <ReturnValue>
680        <ReturnType>Mono.Unix.UnixUserInfo</ReturnType>
681      </ReturnValue>
682      <Docs>
683        <summary>Gets information about the real user of the process.</summary>
684        <value>
685          A <see cref="T:Mono.Unix.UnixUserInfo" /> containing information
686          about the real user of the process.
687        </value>
688        <remarks>
689          <para>
690            The real user is the user who invoked the program.
691          </para>
692        </remarks>
693        <altmember cref="M:Mono.Unix.UnixEnvironment.EffectiveGroup" />
694        <altmember cref="M:Mono.Unix.UnixEnvironment.EffectiveUser" />
695        <altmember cref="M:Mono.Unix.UnixEnvironment.RealGroup" />
696        <altmember cref="M:Mono.Unix.Native.Syscall.getuid" />
697      </Docs>
698    </Member>
699    <Member MemberName="RealUserId">
700      <MemberSignature Language="C#" Value="public static long RealUserId { get; }" />
701      <MemberSignature Language="ILAsm" Value=".property int64 RealUserId" />
702      <MemberType>Property</MemberType>
703      <AssemblyInfo>
704        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
705        <AssemblyVersion>2.0.0.0</AssemblyVersion>
706        <AssemblyVersion>4.0.0.0</AssemblyVersion>
707      </AssemblyInfo>
708      <ReturnValue>
709        <ReturnType>System.Int64</ReturnType>
710      </ReturnValue>
711      <Docs>
712        <summary>Gets the real user ID of the process.</summary>
713        <value>
714          A <see cref="T:System.Int64" /> containing the real user ID of the
715          process.
716        </value>
717        <remarks>
718          <para>
719            The real user ID is that of the user who invoked the program.
720          </para>
721        </remarks>
722        <altmember cref="M:Mono.Unix.UnixEnvironment.EffectiveGroupId" />
723        <altmember cref="M:Mono.Unix.UnixEnvironment.EffectiveUserId" />
724        <altmember cref="M:Mono.Unix.UnixEnvironment.RealGroupId" />
725        <altmember cref="M:Mono.Unix.Native.Syscall.getuid" />
726      </Docs>
727    </Member>
728    <Member MemberName="SetNiceValue">
729      <MemberSignature Language="C#" Value="public static void SetNiceValue (int inc);" />
730      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetNiceValue(int32 inc) cil managed" />
731      <MemberType>Method</MemberType>
732      <AssemblyInfo>
733        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
734        <AssemblyVersion>2.0.0.0</AssemblyVersion>
735        <AssemblyVersion>4.0.0.0</AssemblyVersion>
736      </AssemblyInfo>
737      <ReturnValue>
738        <ReturnType>System.Void</ReturnType>
739      </ReturnValue>
740      <Parameters>
741        <Parameter Name="inc" Type="System.Int32" />
742      </Parameters>
743      <Docs>
744        <param name="inc">
745          A <see cref="T:System.Int32" /> containing the value to add to the
746          current process' <i>nice value</i>.
747        </param>
748        <summary>Subtraces <paramref name="inc" /> from the process' priority.</summary>
749        <remarks>
750          <para>
751            The process' <i>nice value</i> is a value subtraced from the
752            process' priority.  The higher the value of
753            <paramref name="inc" />, the lower the priority of the process
754          </para>
755        </remarks>
756        <exception cref="T:Mono.Unix.UnixIOException">
757          <paramref name="inc" /> is negative but the caller is not the
758          super-user.
759          [<see cref="F:Mono.Unix.Native.Errno.EPERM" />]
760        </exception>
761        <altmember cref="M:Mono.Unix.Native.Syscall.nice" />
762      </Docs>
763    </Member>
764    <Member MemberName="SetProcessGroup">
765      <MemberSignature Language="C#" Value="public static void SetProcessGroup ();" />
766      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetProcessGroup() cil managed" />
767      <MemberType>Method</MemberType>
768      <AssemblyInfo>
769        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
770        <AssemblyVersion>2.0.0.0</AssemblyVersion>
771        <AssemblyVersion>4.0.0.0</AssemblyVersion>
772      </AssemblyInfo>
773      <ReturnValue>
774        <ReturnType>System.Void</ReturnType>
775      </ReturnValue>
776      <Parameters />
777      <Docs>
778        <summary>Set the process group of the current process.</summary>
779        <remarks>
780          <para>
781            If the affected process is not the invoking process, then it must
782            be a child of the invoking process, and both processes must be in
783            the same session.
784          </para>
785        </remarks>
786        <exception cref="System.InvalidOperationException">
787          <para>
788            The target process is a session leader.
789            [<see cref="F:Mono.Unix.Native.Errno.EPERM" />]
790          </para>
791        </exception>
792        <exception cref="Mono.Unix.UnixIOException">
793          <para>
794            The target process is not the calling process or
795            a child of the calling process.
796            [<see cref="F:Mono.Unix.Native.Errno.ESRCH" />]
797          </para>
798          <para>-or-</para>
799          <para>
800            The requested process is a child of the calling process,
801            but it has performed an
802            <see cref="F:Mono.Unix.Native.Syscall.exec" />(3)
803            operation.
804            [<see cref="F:Mono.Unix.Native.Errno.EACCES" />]
805          </para>
806        </exception>
807        <altmember cref="P:Mono.Unix.UnixProcess.ProcessGroupId" />
808        <altmember cref="M:Mono.Unix.Native.Syscall.setpgrp" />
809      </Docs>
810    </Member>
811    <Member MemberName="SetSupplementaryGroupIds">
812      <MemberSignature Language="C#" Value="public static void SetSupplementaryGroupIds (long[] list);" />
813      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetSupplementaryGroupIds(int64[] list) cil managed" />
814      <MemberType>Method</MemberType>
815      <AssemblyInfo>
816        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
817        <AssemblyVersion>2.0.0.0</AssemblyVersion>
818        <AssemblyVersion>4.0.0.0</AssemblyVersion>
819      </AssemblyInfo>
820      <ReturnValue>
821        <ReturnType>System.Void</ReturnType>
822      </ReturnValue>
823      <Parameters>
824        <Parameter Name="list" Type="System.Int64[]" />
825      </Parameters>
826      <Docs>
827        <param name="list">
828          A <see cref="T:System.Int64" /> array containing the
829          new group access list.
830        </param>
831        <summary>
832          Set the group access list of the current process.
833        </summary>
834        <remarks>
835          <para>
836            Only the super-user may set new groups.
837          </para>
838          <para>
839            The group access list is a list of groups which the current
840            process belongs to.  These groups are used for file access checks
841            when the
842            <see cref="P:Mono.Unix.UnixEnvironment.RealUser" /> is not the
843            file's
844            <see cref="P:Mono.Unix.UnixFileSystemInfo.OwnerUser" />; each of
845            the supplementary groups is checked against
846            <see cref="P:Mono.Unix.UnixFileSystemInfo.OwnerGroup" /> to see if
847            group access applies, before using the  "other"
848            <see cref="P:Mono.Unix.UnixFileSystemInfo.FileAccessPermissions" />.
849          </para>
850        </remarks>
851        <exception cref="System.InvalidOperationException">
852          <para>
853            The caller is not the super-user.
854            [<see cref="F:Mono.Unix.Native.Errno.EPERM" />]
855          </para>
856        </exception>
857        <altmember cref="M:Mono.Unix.Native.Syscall.setgroups" />
858      </Docs>
859    </Member>
860    <Member MemberName="SetSupplementaryGroups">
861      <MemberSignature Language="C#" Value="public static void SetSupplementaryGroups (Mono.Unix.UnixGroupInfo[] groups);" />
862      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetSupplementaryGroups(class Mono.Unix.UnixGroupInfo[] groups) cil managed" />
863      <MemberType>Method</MemberType>
864      <AssemblyInfo>
865        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
866        <AssemblyVersion>2.0.0.0</AssemblyVersion>
867        <AssemblyVersion>4.0.0.0</AssemblyVersion>
868      </AssemblyInfo>
869      <ReturnValue>
870        <ReturnType>System.Void</ReturnType>
871      </ReturnValue>
872      <Parameters>
873        <Parameter Name="groups" Type="Mono.Unix.UnixGroupInfo[]" />
874      </Parameters>
875      <Docs>
876        <param name="groups">
877          A <see cref="T:Mono.Unix.UnixGroupInfo" /> array containing the
878          new group access list.
879        </param>
880        <summary>
881          Set the group access list of the current process.
882        </summary>
883        <remarks>
884          <para>
885            Only the super-user may set new groups.
886          </para>
887          <para>
888            The group access list is a list of groups which the current
889            process belongs to.  These groups are used for file access checks
890            when the
891            <see cref="P:Mono.Unix.UnixEnvironment.RealUser" /> is not the
892            file's
893            <see cref="P:Mono.Unix.UnixFileSystemInfo.OwnerUser" />; each of
894            the supplementary groups is checked against
895            <see cref="P:Mono.Unix.UnixFileSystemInfo.OwnerGroup" /> to see if
896            group access applies, before using the  "other"
897            <see cref="P:Mono.Unix.UnixFileSystemInfo.FileAccessPermissions" />.
898          </para>
899        </remarks>
900        <exception cref="System.InvalidOperationException">
901          <para>
902            The caller is not the super-user.
903            [<see cref="F:Mono.Unix.Native.Errno.EPERM" />]
904          </para>
905        </exception>
906        <altmember cref="M:Mono.Unix.Native.Syscall.setgroups" />
907      </Docs>
908    </Member>
909    <Member MemberName="UserName">
910      <MemberSignature Language="C#" Value="public static string UserName { get; }" />
911      <MemberSignature Language="ILAsm" Value=".property string UserName" />
912      <MemberType>Property</MemberType>
913      <AssemblyInfo>
914        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
915        <AssemblyVersion>2.0.0.0</AssemblyVersion>
916        <AssemblyVersion>4.0.0.0</AssemblyVersion>
917      </AssemblyInfo>
918      <ReturnValue>
919        <ReturnType>System.String</ReturnType>
920      </ReturnValue>
921      <Docs>
922        <summary>Gets the user name of the user executing the process.</summary>
923        <value>
924          A <see cref="T:System.String" /> containing the username of the user
925          executing the process.
926        </value>
927        <remarks>
928          <para>
929            This is the username of the <i>real</i> user id.
930          </para>
931          <para>
932            This is equivalent to calling
933            <see cref="P:Mono.Unix.UnixEnvironment.RealUser" />.<see cref="P:Mono.Unix.UnixUserInfo.UserName" />.
934          </para>
935        </remarks>
936      </Docs>
937    </Member>
938  </Members>
939</Type>
940