OSspecific.H 6.14 KB
Newer Older
1
2
3
4
/*---------------------------------------------------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     |
5
    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
6
7
8
9
10
     \\/     M anipulation  |
-------------------------------------------------------------------------------
License
    This file is part of OpenFOAM.

11
12
13
14
    OpenFOAM is free software: you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
15
16
17
18
19
20
21

    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    for more details.

    You should have received a copy of the GNU General Public License
22
    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
23
24
25
26
27

InNamespace
    Foam

Description
28
29
    Functions used by OpenFOAM that are specific to POSIX compliant
    operating systems and need to be replaced or emulated on other systems.
30
31

SourceFiles
32
    POSIX.C
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

\*---------------------------------------------------------------------------*/

#ifndef OSspecific_H
#define OSspecific_H

#include "fileNameList.H"

#include <sys/types.h>

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

namespace Foam
{

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

//- Return the PID of this process
pid_t pid();

//- Return the parent PID of this process
pid_t ppid();

//- Return the group PID of this process
pid_t pgid();

//- Return true if environment variable of given name is defined
bool env(const word&);

//- Return environment variable of given name
63
//  Return string() if the environment is undefined
64
string getEnv(const word&);
65
66

//- Set an environment variable
67
bool setEnv(const word& name, const std::string& value, const bool overwrite);
68

69
70
//- Return the system's host name, as per hostname(1)
//  Optionally with the full name (as per the '-f' option)
71
string hostName(const bool full=false);
72

73
//- Return the system's domain name, as per hostname(1) with the '-d' option
74
string domainName();
75

76
//- Return the user's login name
77
string userName();
78

79
80
81
//- Is user administrator
bool isAdministrator();

82
83
84
85
//- Return home directory path name for the current user
fileName home();

//- Return home directory path name for a particular user
86
fileName home(const string& userName);
87
88
89
90
91
92
93
94
95
96
97
98
99

//- Return current working directory path name
fileName cwd();

//- Change the current directory to the one given and return true,
//  else return false
bool chDir(const fileName& dir);

//- Make a directory and return an error if it could not be created
//  and does not already exist
bool mkDir(const fileName&, mode_t=0777);

//- Set the file mode
Mark Olesen's avatar
Mark Olesen committed
100
bool chMod(const fileName&, const mode_t);
101
102
103
104

//- Return the file mode
mode_t mode(const fileName&);

Mark Olesen's avatar
Mark Olesen committed
105
//- Return the file type: DIRECTORY or FILE
106
107
fileName::Type type(const fileName&);

Mark Olesen's avatar
Mark Olesen committed
108
//- Does the name exist (as DIRECTORY or FILE) in the file system?
109
110
//  Optionally enable/disable check for gzip file.
bool exists(const fileName&, const bool checkGzip=true);
111

112
113
//- Does the name exist as a DIRECTORY in the file system?
bool isDir(const fileName&);
114

Mark Olesen's avatar
Mark Olesen committed
115
116
117
118
//- Does the name exist as a FILE in the file system?
//  Optionally enable/disable check for gzip file.
bool isFile(const fileName&, const bool checkGzip=true);

119
//- Return size of file
120
off_t fileSize(const fileName&);
121
122
123
124

//- Return time of last file modification
time_t lastModified(const fileName&);

125
126
127
//- Return time of last file modification
double highResLastModified(const fileName&);

128
129
130
131
132
133
134
135
136
//- Read a directory and return the entries as a string list
fileNameList readDir
(
    const fileName&,
    const fileName::Type=fileName::FILE,
    const bool filtergz=true
);

//- Copy, recursively if necessary, the source to the destination
Mark Olesen's avatar
Mark Olesen committed
137
bool cp(const fileName& src, const fileName& dst);
138

Mark Olesen's avatar
Mark Olesen committed
139
140
//- Create a softlink. dst should not exist. Returns true if successful.
bool ln(const fileName& src, const fileName& dst);
141

Mark Olesen's avatar
Mark Olesen committed
142
143
//- Rename src to dst
bool mv(const fileName& src, const fileName& dst);
144

Mark Olesen's avatar
Mark Olesen committed
145
146
147
148
149
//- Rename to a corresponding backup file
//  If the backup file already exists, attempt with "01" .. "99" suffix
bool mvBak(const fileName&, const std::string& ext = "bak");

//- Remove a file, returning true if successful otherwise false
150
151
152
153
154
155
156
157
158
159
160
161
bool rm(const fileName&);

//- Remove a dirctory and its contents
bool rmDir(const fileName&);

//- Sleep for the specified number of seconds
unsigned int sleep(const unsigned int);

//- Close file descriptor
void fdClose(const int);

//- Check if machine is up by pinging given port
162
bool ping(const string&, const label port, const label timeOut);
163

164
//- Check if machine is up by pinging port 22 (ssh) and 222 (rsh)
165
bool ping(const string&, const label timeOut=10);
166

167
//- Execute the specified command
168
int system(const std::string& command);
169

170
//- Open a shared library. Return handle to library. Print error message
171
172
//  if library cannot be loaded (check = true)
void* dlOpen(const fileName& lib, const bool check = true);
173
174
175
176

//- Close a dlopened library using handle. Return true if successful
bool dlClose(void*);

177
//- Lookup a symbol in a dlopened library using handle to library
178
void* dlSym(void* handle, const std::string& symbol);
179

180
181
182
//- Report if symbol in a dlopened library could be found
bool dlSymFound(void* handle, const std::string& symbol);

mattijs's avatar
mattijs committed
183
184
185
//- Return all loaded libraries
fileNameList dlLoaded();

186

mattijs's avatar
mattijs committed
187
188
189
190
191
192
193
194
195
196
197
198
// Low level random numbers. Use Random class instead.

//- Seed random number generator.
void osRandomSeed(const label seed);

//- Return random integer (uniform distribution between 0 and 2^31)
label osRandomInteger();

//- Return random double precision (uniform distribution between 0 and 1)
scalar osRandomDouble();


199
200
201
202
203
204
205
206
207
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

} // End namespace Foam

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

#endif

// ************************************************************************* //