Difference between revisions of "VMS Python compatibility issues"
m |
m |
||
Line 17: | Line 17: | ||
##On OpenVMS <code>mkdir()</code> creates all intermediate directories (if required) | ##On OpenVMS <code>mkdir()</code> creates all intermediate directories (if required) | ||
#Process | #Process | ||
− | ##There | + | ##There are no Linux-like <code>fork()</code> and <code>spawn()</code> functions |
− | ##Pipes are created via mailbox and | + | ##Pipes are created via mailbox and are not totally compatible with UNIX pipes (compatibility issues) |
− | ##If child has threads, each thread posts 'END-OF-PIPE' when | + | ##If a child process has threads, each thread posts 'END-OF-PIPE' when the child completes/terminates |
− | ## | + | ##The functions <code>select()</code> and <code>poll()</code> work only with sockets |
− | ##<code>siginterrupt()</code> is not supported | + | ##The function <code>siginterrupt()</code> is not supported |
##A lot of issues with signals | ##A lot of issues with signals | ||
##Interrupting I/O operation may hang | ##Interrupting I/O operation may hang |
Revision as of 00:33, 13 September 2020
- File system
- Directories and files with the same name are allowed
- Files have versioning, therefore two files with the same name might have different content
- Shared stream I/O does not work
- To guarantee the file content is on the disk the
fsync()
function must be used - Because files can be referenced using logical names the real file path may be different from the “path” used to open a file
- Files has no access time attribute
- Changing a files permissions also changes its modification time
- Changing the content of a directory does not change the directory modification time.
- Files have four rights bits (read, write, execute, and delete); Linux (UNIX) has only three (read, write, and execute)
- The ‘.DIR’ extension is reserved
- Non-blocking file IO is not supported by the OpenVMS CRTL
- There are various known issues with symbolic link implementation
- The symbol '$' is commonly used in file and directory names
- On OpenVMS chmod(0) sets the user's default permissions as opposed to resetting permissions
- To delete a directory the user has to have ‘delete’ permission for the directory
- On OpenVMS
mkdir()
creates all intermediate directories (if required)
- Process
- There are no Linux-like
fork()
andspawn()
functions - Pipes are created via mailbox and are not totally compatible with UNIX pipes (compatibility issues)
- If a child process has threads, each thread posts 'END-OF-PIPE' when the child completes/terminates
- The functions
select()
andpoll()
work only with sockets - The function
siginterrupt()
is not supported - A lot of issues with signals
- Interrupting I/O operation may hang
- There is no root user with zero uid
- There is no unix commands like: echo, exit …
- OpenVMS cannot handle recursion overflow properly - just crashes
- There are no Linux-like
- Sockets
AF_UNIX
has different meaning- Binding socket to empty address fails (wildcard resolved to multiple address).
getpeername()
returns ‘0.0.0.0’ instead of error- OpenVMS crashed on
socket.socket.sendall
- Time
time_t
is unsignedstrftime()
- Does not support %G format
- Undefined behavior when format ends with '%'
- ‘%4Y’ is padded with spaces
- Miscellaneous
- Environment variables have unusual implementation - through logical names. There is no appropriate way to get all environment variables.
- OpenVMS sqlite3 port does not support "OR ROLLBACK"
- Program prints crush dump
locale.strxfrm()
works unusual
- Compiler
uint_ptr
is always 64 bit, void* is 32 bit or 64 bit- Compiler does not support relative include paths